1

1.1.1970 以降のマイクロ秒単位のタイムスタンプがあります。に変換してみました

          yyyy.MM.dd HH.mm.ss.ffffff 

日時を使用します。例: 1337060932000000 マイクロ秒 結果は 2012 年 5 月 15 日 7.48 になります。

しかし、私が得た結果は2時間オフです。その理由は何ですか?

4

2 に答える 2

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ください。経験から、常にあなたが考えているタイム ゾーンとは限らないことがわかります。

于 2012-05-31T10:14:58.960 に答える
1

ヒントをありがとう。私はこの方法で問題を解決しました:

    int offset = 2;
    DateTime d = new DateTime(1979,1,1, offset,0,0);

この例は単純化されています。オフセットは外部ファイルで指定されるため、さまざまなタイム ゾーンに合わせて簡単に変更できます。

于 2012-05-31T10:24:05.937 に答える