この形式「20090219000000.000000+480」で時間を指定する WMI クエリがあります。
誰かがこれがどのような形式であるかを教えてもらえますか?.NET にはそれを操作するための組み込み機能がありますか?
編集
この時間値は、私が見つけたサンプル クエリからのものです。それを生成するためにどの時間値が使用されたかはわかりません。時間値をこの形式に変換できる必要があります。
編集2
今回はCIM_DATETIME形式であることがわかりました。
他の人が示唆しているように、文字列はDATETIMEMOFデータ型の例です。これは固定長の文字列であり、その構造の詳細については、こちらをご覧ください。.NetはSystem.Management名前空間を使用してWMIにアクセスし、そのクラスの1つはManagementDateTimeConverterクラスであり、WMI日時値の操作を容易にします。
これをすべて使用する方法は次のとおりです。
var time_written = System.Management.ManagementDateTimeConverter.ToDateTime((string)result.GetPropertyValue("TimeWritten"));
これは、区切り記号のない標準の日時文字列のように見えます。
「20090219000000.000000+480」
「yyyyMMddhhmmss.ffffff+480」
yyyy - 4 桁の年。
MM - 月の数字。1 桁の月には先行ゼロがあります。
dd - 月の日。1 桁の日の先頭にはゼロが付きます。
hh - 12 時間制の時間。1 桁の時間には先行ゼロがあります。(これは、先行ゼロを持つ 1 桁の時間を持つ 24 時間制の時間である HH の場合もあります。)
mm - 分。1 桁の分には先行ゼロがあります。
ffffff - 6 桁の精度での秒の端数。
「+480」はタイムゾーン インジケーターである可能性が高いですが、標準的なものではありません。通常、タイムゾーンは UTC からの時間 (または時と分) で表されます。これはおそらく数分にすぎないようです。そのため、標準の書式指定子はありません。
.NET の DateTime クラスは、この値を操作するために使用するものです。ただし、残りの文字列を実際の DateTime 変数に解析する前に、「+480」の部分を削除することをお勧めします。次に、それを正しいタイムゾーンに調整するか、事前にタイムゾーン変換 (分から時間/分へ) を実行し、「+480」を正しいタイムゾーン表現に変更してから、すべてを DateTime.Parse に渡します。
このリンクを見てください。見るだけで、yyyyMMddhhmmss.[「f」文字の全体] の形式であると言えます。
それが表す日付を教えていただけると助かります。開始時の2009年は、YYYYMMDDHHMMSS.FFFFFF+TZである可能性があることを示唆しています
(F = 秒単位の分数、TZ は UTC との差 (分単位) であるため、ここでは 6 時間)
これを DateTime.ParseExact-Methode (String, String, IFormatProvider, DateTimeStyles) で解析できます。
フォーマット文字列は「yyyyMMddHHmmss.ffffffzzz」です。