0

この時刻形式の文字列(20130221191038.576375+330)を、datetimeなどのc#クラスを介して通常のdatetimeに変換する必要があります。

これを変換するアイデアを共有してください。

4

3 に答える 3

0

みんなありがとう、私はErik、tung、BlackHatShadowの助けを借りて私の要件の解決策を手に入れました。

これを参照

これもまた

于 2013-02-22T06:42:23.090 に答える
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

私はあなたがすでに解決策を見つけたことを知っています、しかし私はあなたがまさに望むことをするこの素晴らしい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 に答える