0

我必须(20130221191038.576375+330)通过像 datetime 这样的 c# 类将此时间格式字符串转换为正常的日期时间。

请分享转换这个的想法..

4

3 回答 3

0

我知道您已经找到了解决方案,但我遇到了这个不错的ManagementDateTimeConverter .Net 类,它完全符合您的要求。您需要做的就是:

// This gets converted to your local time
DateTime converted = ManagementDateTimeConverter.ToDateTime("20130221191038.576375+330")

// If you want the UTC equivalent:
converted.ToUniversalTime()
于 2013-03-07T21:09:48.987 回答
0

您拥有的格式是 CIM_DATETIME 值,解析起来几乎很简单。唯一的问题是它将时区指定为分钟数的偏移量。

您可以使用DateTime.TryParseExact转换时区说明符之前的字符串部分,然后从结果中减去时区值(以分钟为单位)以获得 UTC 日期时间。然后,您可以根据需要转换为本地时间,或将其保留为 UTC 形式。

public static DateTime? CIMToUTCDateTime(string CIM_DATETIME)
{
    // CIM_DATETIME must be 25 characters in length
    if (string.IsNullOrEmpty(CIM_DATETIME) || CIM_DATETIME.Length != 25)
        return null;

    // Get the datetime portion of the string without timezone offset
    string dtPortion = CIM_DATETIME.Substring(0, 21);

    // convert to datetime
    DateTime dt;
    if (!DateTime.TryParseExact(dtPortion, "yyyyMMddHHmmss.ffffff", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.AssumeUniversal | System.Globalization.DateTimeStyles.AdjustToUniversal, out dt))
        return null;

    // subtract timezone offset to get UTC time equivalent
    int tzoffset;
    if (!Int32.TryParse(CIM_DATETIME.Substring(21), out tzoffset))
        return null;
    dt = dt.AddMinutes(-tzoffset);

    // return UTC datetime
    return dt;
}

现在我已经写了这个可怕的小方法,你已经找到了另一个解决方案。典型:P

于 2013-02-22T06:53:45.723 回答
0

谢谢大家,在 Erik、tung 和 BlackHatShadow 的帮助下,我得到了满足我要求的解决方案。

提到这个

这也是

于 2013-02-22T06:42:23.090 回答