C # - форматирование текущего времени - PullRequest
14 голосов
/ 13 октября 2011

В C # как я могу получить текущий DateTime в следующем формате? 2011-08-10T21: 36: 01.6327538Z

Ответы [ 4 ]

22 голосов
/ 13 октября 2011
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")

Имейте в виду, что DateTime.Now иногда бывает точным с точностью до тысячной доли секунды, в зависимости от системных часов. Эта страница показывает следующее:

Можно отобразить очень маленькие дробные доли секунды, например, десятитысячные доли секунды или сто тысячные доли секунды. Однако эти значения могут не иметь смысла. Точность значений даты и времени зависит от разрешения системных часов. В Windows NT 3.5 и более поздних версиях, а также в операционных системах Windows Vista разрешение часов составляет приблизительно 10–15 миллисекунд.

Однако, если вы заполните DateTime самостоятельно, вы можете сделать его более точным. Мне не известны какие-либо другие встроенные библиотеки, более точные, чем DateTime.UtcNow.

Кроме того, DateTime.UtcNow.ToString("o") даст вам порядковую строку даты и времени. Это не указывает часовой пояс в конце, поэтому вам все равно нужно добавить Z в конец, если вы имели дело с Utc

2 голосов
/ 13 октября 2011

Если вы хотите, чтобы ваше время было в UTC (что и подразумевает Z), тогда вам нужно убедиться, что это время в формате UTC ...

т.е.

DateTime.UtcNow.ToString("O");

или при условии, чтовы знаете, что ваша дата и время локальные ...

DateTime foo = MethodThatReturnsALocalTime();
foo.ToUniversalTime().ToString("O");

FWIW: DateTime.UtcNow быстрее, чем DateTime.Now, потому что не нужно выполнять поиск по часовому поясу, в Compact Framework эта разница может быть очень большойзаметно по какой-то причине.

1 голос
/ 13 октября 2011

Попробуйте:

    var xs = DateIime.Now;
    var frmtdDatetime = xs.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff");

и проверьте эту ссылку MSDN

0 голосов
/ 13 октября 2011

Вы можете попробовать:

DateTime.Now.ToString("o");

, который также включает компонент часового пояса.- ИЛИ -

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff")
...