2009-08-29 3 views
10

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

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

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

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

EDIT 2

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

ответ

16

Это выглядит как стандартная дата строка времени без каких-либо разделителей:

'20090219000000,000000 + 480'

'yyyyMMddhhmmss.ffffff + 480'

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

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

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

3

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

1

Это помогло бы, если бы вы сказали нам, что это датировано. Это 2009 в начале предполагает, что это может быть YYYYMMDDHHMMSS.FFFFFF + TZ

(F = доля секунды, а TZ быть разница с UTC в минуту, так что здесь, 6 часов)

+3

Нужно быть осторожным с корпусом персонажей. ММ - месяц, где мм - минуты. –

+2

Это не предназначалось как строка формата, а просто (удобочитаемое) описание. –

1

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

Строка формата является "yyyyMMddHHmmss.ffffffzzz"

+0

Это не работает, потому что последние 4 символа являются часовым поясом в минутах, но DateTime «zzz» ожидает часы. – user3902302

20

Как и другие предложили строку является примером DATETIME MOF data type. Это строка с фиксированной длиной, и вы можете найти подробную информацию о ее структуре here. ,Сеть использует System.Management namespace для доступа к WMI, а один из ее классов - класс ManagementDateTimeConverter, который облегчает работу со значениями времени и времени WMI.

+5

System.Management.ManagementDateTimeConverter.ToDateTime ((string) result.GetPropertyValue («TimeWritten»)); Мог бы спасти меня через час, написав его сам = P –

+0

Я искал час для преобразования этого. Спасибо Merlyn –

+0

Большое спасибо за обращение к «ManagementDateTimeConverter»! – Elena