この時刻形式の文字列(20130221191038.576375+330)
を、datetimeなどのc#クラスを介して通常のdatetimeに変換する必要があります。
これを変換するアイデアを共有してください。
使用している形式は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
私はあなたがすでに解決策を見つけたことを知っています、しかし私はあなたがまさに望むことをするこの素晴らしいManagementDateTimeConverter.Netクラスに出くわしました。あなたがする必要があるのは:
// This gets converted to your local time
DateTime converted = ManagementDateTimeConverter.ToDateTime("20130221191038.576375+330")
// If you want the UTC equivalent:
converted.ToUniversalTime()