В каком формате это значение времени? - PullRequest
11 голосов
/ 29 августа 2009

У меня есть запрос WMI, который указывает время в этом формате '20090219000000.000000 + 480'

Может кто-нибудь сказать мне, что это за формат, и имеет ли .NET какие-либо встроенные функции для работы с ним?

EDIT

Это значение времени из примера запроса, который я нашел. Я не знаю, какое значение времени было использовано для его генерации. Мне просто нужно иметь возможность преобразовать значение времени в этот формат.

РЕДАКТИРОВАТЬ 2

Я узнал, что это время в CIM_DATETIME формате.

Ответы [ 5 ]

20 голосов
/ 30 августа 2009

Как и предполагали другие, строка является примером DATETIME MOF тип данных . Это строка фиксированной длины, и вы можете найти подробности о ее структуре здесь . .Net использует пространство имен System.Management для доступа к WMI, и одним из его классов является ManagementDateTimeConverter класс, который облегчает работу со значениями даты и времени WMI.

16 голосов
/ 29 августа 2009

Это похоже на стандартную строку даты и времени без разделителей:

+20090219000000,000000 + 480 '

yyyyMMddhhmmss.ffffff + 480 '

гггг - год из четырех цифр.
ММ - Числовой месяц. Месяцы, состоящие из одной цифры, имеют начальный ноль.
дд - день месяца. Дни, состоящие из одной цифры, имеют ведущий ноль.
чч - час в 12-часовых часах. Однозначные часы имеют ведущий ноль. (Это также может быть ЧЧ, то есть час в 24-часовых часах с однозначными часами, начинающимися с нуля.)
мм - минута. Минуты из одной цифры имеют начальный ноль.
ffffff - доля секунды с шестизначной точностью.

"+480", скорее всего, индикатор часового пояса, хотя и не стандартный. Обычно часовые пояса представлены в виде часов (или часов и минут) от UTC. Похоже, это всего лишь минуты. Таким образом, стандартного спецификатора формата не существует.

Класс DateTime в .NET - это то, что вы будете использовать для работы с этим значением. Тем не менее, вы, вероятно, захотите убрать часть «+480», прежде чем анализировать оставшуюся строку в фактической переменной DateTime. Затем вы можете настроить его на правильный часовой пояс или выполнить преобразование часового пояса (от минут до часов / минут) заблаговременно и изменить «+480» на правильное представление часового пояса, а затем передать все это в DateTime.Parse.

3 голосов
/ 29 августа 2009

Взгляните на эту ссылку . Просто посмотрев, я бы сказал, что в формате yyyyMMddhhmmss. [Целая куча 'f' символов].

1 голос
/ 29 августа 2009

Вы можете проанализировать это с DateTime.ParseExact-Methode (String, String, IFormatProvider, DateTimeStyles)

Строка формата "yyyyMMddHHmmss.ffffffzzz"

1 голос
/ 29 августа 2009

Было бы полезно, если бы вы сказали нам дату, которую она представляла. В начале 2009 года предполагается, что это может быть ГГГГММДДЧЧММСС.FFFFFF + TZ

(F = доля секунд, а TZ - отличие от UTC в минутах, поэтому здесь 6 часов)

...