Какой формат времени в журнале событий Windows? - PullRequest
2 голосов
/ 19 июня 2010

К какому формату относится это перемешивание 2010-06-19T06:28:01.077148400Z?

Это соответствует 19.06.2010 11:58:01.

Я попытался разобрать строку в DateTime.Parse (), и объект DateTime представляет указанное выше время. Теперь я хочу преобразовать этот объект DateTime в формат еще раз. Как я могу это сделать?

Ответы [ 4 ]

9 голосов
/ 19 июня 2010

Учитывая вашу пользовательскую информацию, похоже, что вы находитесь в индийском часовом поясе - зона Нью-Дели на 5 часов и тридцать минут опережает UTC .«Z» в конце строки даты / времени указывает на UTC, что имеет смысл: 6:28 UTC - это 11:58 в вашем часовом поясе.

Вы можете взять локальный DateTime и преобразовать егов UTC, используя ToUniversalTime - но если вы хотите получить текущее время, вы можете просто использовать DateTime.UtcNow для начала.

Как только вы получите DateTime в UTC, эта строка формата будетотформатируйте его таким же образом:

yyyy-MM-ddTHH:mm:ss.fffffff00K

Это очень похоже на формат туда-обратно, только с двумя дополнительными нулями в конце.Они жестко запрограммированы в 0, так как DateTime не имеет точности с точностью до одной десятой микросекунды, в то время как ваша строка образца имеет значение до наносекунды.

Например:

DateTime now = DateTime.UtcNow;
string s = now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff00K",
                        CultureInfo.InvariantCulture);

создает что-то вроде этого:

2010-06-19T13:57:15.885578200Z
1 голос
/ 19 июня 2010

Похоже Universaltime для меня.

Grz, Kris.

0 голосов
/ 19 июня 2010

Похоже, что UTC отформатировано в формат туда и обратно .

0 голосов
/ 19 июня 2010

Это похоже на представление DateTime с использованием спецификатора формата Round-trip ("O", "o") :

var s = "2010-06-19T06:28:01.077148400Z";

var dt = DateTime.Parse(s, null, DateTimeStyles.RoundtripKind);

Console.WriteLine(dt.ToString("o"));  //  prints "2010-06-19T06:28:01.0771484Z"
...