c # синтаксический анализ строки на сегодняшний день. ‘ГГГГМДДХХММСС.ffffff zzz’

#c# #datetime #parsing

#c# #datetime #синтаксический анализ

Вопрос:

Я хочу разобрать строку на DateTime с помощью ParseExact. Строка даты, о которой идет речь, такая: 20200917073202.500000 060 .

Я попытался преобразовать ее с помощью: DateTime.ParseExact("20200917073202.500000 060", "yyyyMMddHHmmss.ffffff zzz", null); но затем я получаю эту ошибку:

 System.FormatException: 'String was not recognized as a valid DateTime.'
  

Является ли «ГГГГМДДХХММСС.ffffff zzz» правильным форматом? Точной датой из этой строки должно быть «17.09.2020 8:32:02».


Отредактируйте для получения дополнительной информации:

Я получаю эту строку даты из запроса WMI, который ищет время последней загрузки. Как ни странно, когда я запускаю этот код через ‘WMI code creator’, я получаю эту строку даты: 20200917083202.500000 120 . Здесь время указано верно, но теперь в конце появляется 120. Я все еще точно не знаю, что означает это число.

Комментарии:

1. Я думаю, это должно быть 60 минут. Я получаю этот формат из запроса WMI.

Ответ №1:

WMI использует формат времени DMTF (Целевая группа распределенного управления), который поддерживает UUU , который представляет собой смещение в минутах. C # DateTime не может проанализировать это напрямую. Взгляните на ManagementDateTimeConverter.

zzz используемый вами для 01:00 часового пояса стиля.

Ответ №2:

Предполагая, что вы импортируете пространство имен (при необходимости добавьте так называемый пакет)

 using System.Management;
  

Задача настолько проста, что:

 DateTime dt = ManagementDateTimeConverter.ToDateTime("20200917073202.500000 060");