#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");