The default toString() method in datetimeoffset converts the time into string format but loses the milliseconds. Is there anyway to preserve it?
4 Answers
ToString()
takes a format argument. There are existing string format codes that will print milliseconds - take a look at the list here.
For example the format code "o" will print a full time string with milliseconds, or you can create your own format string to match your needs and use the "ffff" specifier to add milliseconds where appropriate.
myDateTime.ToString("o")

- 115,835
- 26
- 236
- 269
You have to use "ffff" in the string format to get miliseconds, like:
DateTime date = DateTime.Now;
string strDate = String.Format("{0:dd.MM.yyyy hh:mm.ss:ffff}", date);
Mitja

- 4,268
- 5
- 24
- 30
You can do this using the f character in your format string.
DateTimeOffset.Now.ToString("ddMMyyy-HH:mm:ss")
Gives "23032011-16:58:36"
DateTimeOffset.Now.ToString("ddMMyyy:HHmmssffff")
Gives "23032011-16:59:088562"

- 13,548
- 4
- 26
- 26
According to the documentation of DateTimeOffset
this behaves in most ways similar to ToString
of the DateTime class. This means that you can for example use the standard format string o
which shows the milliseconds, or you can use whatever custom format pattern you want.
So you can do this:
Console.WriteLine(dto.ToString("o"));

- 9,383
- 1
- 23
- 37