11

我有一个 WMI 查询,它以这种格式“20090219000000.000000+480”指定时间

谁能告诉我这是什么格式,.NET 是否有任何内置功能可以使用它?

编辑

这个时间值来自我找到的一个示例查询。我不知道使用什么时间值来生成它。我只需要能够将时间值转换为这种格式。

编辑 2

我发现这个时间是CIM_DATETIME格式。

4

5 回答 5

21

正如其他人所建议的那样,该字符串是DATETIME MOF 数据类型的一个示例。它是一个固定长度的字符串,您可以在此处找到有关其结构的详细信息。.Net 使用System.Management 命名空间来访问 WMI,它的类之一是ManagementDateTimeConverter类,它有助于使用 WMI 日期时间值。

以下是您如何使用所有这些:

var time_written = System.Management.ManagementDateTimeConverter.ToDateTime((string)result.GetPropertyValue("TimeWritten")); 
于 2009-08-30T11:46:59.443 回答
17

这看起来像一个没有任何分隔符的标准日期时间字符串:

'20090219000000.000000+480'

'yyyyMMddhhmmss.ffffff+480'

yyyy - 四位数的年份。
MM - 数字月份。个位数月份有前导零。
dd - 一个月中的哪一天。个位数的天数有前导零。
hh - 12 小时制中的小时。个位数小时有前导零。(这也可以是 HH,它是 24 小时制中的小时,单位数小时有前导零。)
mm - 分钟。个位数分钟有前导零。
ffffff - 六位精度的秒的小数部分。

“+480”很可能是时区指示器,尽管不是标准的。通常时区表示为 UTC 的小时(或小时和分钟)。这似乎只有几分钟。因此,没有标准格式说明符。

.NET 中的 DateTime 类是你用来处理这个值的。但是,在将剩余的字符串解析为实际的 DateTime 变量之前,您可能希望去掉“+480”部分。然后,您可以将其调整为正确的时区或提前执行时区转换(从分钟到小时/分钟)并将“+480”更改为正确的时区表示,然后将整个内容传递给 DateTime.Parse。

于 2009-08-29T14:03:08.363 回答
3

看看这个链接。只是看我会说它的格式是 yyyyMMddhhmmss。[一大堆'f'字符]。

于 2009-08-29T13:54:50.430 回答
1

如果您告诉我们它代表的日期会有所帮助。它从 2009 年开始暗示它可能是 YYYYMMDDHHMMSS.FFFFFF+TZ

(F = 秒的分数,TZ 与 UTC 的分钟差,所以这里是 6 小时)

于 2009-08-29T13:56:59.133 回答
1

您可以使用 DateTime.ParseExact-Methode (String, String, IFormatProvider, DateTimeStyles) 解析它

格式字符串为“yyyyMMddHHmmss.ffffffzzz”

于 2009-08-29T14:04:10.310 回答