1.1.1970 以降のマイクロ秒単位のタイムスタンプがあります。に変換してみました
yyyy.MM.dd HH.mm.ss.ffffff
日時を使用します。例: 1337060932000000 マイクロ秒 結果は 2012 年 5 月 15 日 7.48 になります。
しかし、私が得た結果は2時間オフです。その理由は何ですか?
Unix エポックはこのタイム ゾーンであるため、UTC 日付を取得している可能性が最も高くなります。次のように基準日を作成してください。
var epoch = new DateTime(1970,1,1, 0,0,0, DateTimeKind.Utc);
それができたら、次のようなことができます。
var localTime = epoch.AddMilliseconds(microseconds / 1000).ToLocalTime();
あなたmicroseconds
が上で提供した値である場合、あなたが得る値は15/05/2012 07:48:52
あなたが期待したものです。
ただし、これはソフトウェアが実行されているコンピューターのローカル タイム ゾーンであることが確実なので、使用するときは注意してToLocalTime
ください。経験から、常にあなたが考えているタイム ゾーンとは限らないことがわかります。
ヒントをありがとう。私はこの方法で問題を解決しました:
int offset = 2;
DateTime d = new DateTime(1979,1,1, offset,0,0);
この例は単純化されています。オフセットは外部ファイルで指定されるため、さまざまなタイム ゾーンに合わせて簡単に変更できます。