将WMI Win32_OperatingSystem InstallDate转换为mm / dd / yyyy格式(C# - WPF)

时间:2010-03-01 20:55:04

标签: c# .net-3.5 wmi

我想知道如何将日期和时间从20100131022308.000000-360转换。

我一直试图弄清楚它已经有一段时间了,我似乎无法到达任何地方。

我在WPF应用程序中使用C#。

3 个答案:

答案 0 :(得分:30)

System.Management.ManagementDateTimeConverter类用于解决您的问题。使用其ToDateTime()方法。它正确解析字符串中的毫秒和UTC偏移量:

  DateTime dt = System.Management.ManagementDateTimeConverter.ToDateTime("20100131022308.000000-360");
  Console.WriteLine(dt);

输出: 1/31/2010 2:23:08 AM

答案 1 :(得分:6)

在句号结束后忽略所有内容:

string date = "20100131022308.000000-360";
date = date.Substring(0, date.IndexOf('.'));
DateTime actualDate = DateTime.ParseExact(date, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Console.WriteLine(actualDate);

这是一种非常简单的日期格式。

答案 2 :(得分:0)

如果您需要解析.NET Standard中的日期,您可以执行以下操作:

public static bool TryParse(string date, out DateTime result)
{
    if (date == null) throw new ArgumentNullException("date");

    try
    {
        var timezonePos = date.IndexOfAny(new[]{'+', '-'});
        var isPlus = date[timezonePos] == '+';
        var timeZoneStr = date.Substring(timezonePos + 1);
        date = date.Substring(0, timezonePos);

        result = DateTime.ParseExact(date, "yyyyMMddHHmmss.ffffff", CultureInfo.InvariantCulture);

        //get utc by removing the timezone adjustment
        var timeZoneMinutes = int.Parse(timeZoneStr);
        result = isPlus
            ? result.AddMinutes(-timeZoneMinutes)
            : result.AddMinutes(timeZoneMinutes);

        return true;
    }
    catch (Exception)
    {
        return false;
    }
}
相关问题