5

私は明らかな間違いをしているに違いありませんが、それを理解することはできません。

mysqlデータベースに保存されている日付をインポートしています(ExpressionEngine CMSによって保存されています)。これはUNIXタイムスタンプです。つまり、1970年1月1日00:00からの秒数です。

だから私はこのようなことをしています:

DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(orderdate /* int read from the database */);

残念ながら、正しい結果が得られません。次に例を示します。

DBから読み取った値:1258598728(これは注文日です)

Paypalは、2009年11月18日12:45:20PSTに注文を確定するメールを送信しました

DBでこの値を読み取り、この日付を正しく表示する方法を知っているphp Webサイトは、2009-11-18 03:45 PMとして正しく表示します(東海岸のサーバーでホストされているため、これは正しいようです)

上記の私のコードは2009年11月19日2:45:28AMを与えます!! (UTCは、2009年11月18日午後9時45分に東の時刻を示します。つまり、予想と6時間の差があります)

適切なタイムゾーンを設定するように注意してDateTimeOffsetを使用しても、同じ結果が得られます。

私が間違っていることについて何か考えはありますか?

4

3 に答える 3

9

これを試して:

DateTime epoch = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc);
DateTime myDate = epoch.AddSeconds(1258598728).toLocalTime();
于 2009-11-19T20:32:35.683 に答える
1

http://www.onlineconversion.com/unix_time.htmは、計算が正しいことを確認します。Unix time 1258598728 = "Thu, 19 Nov 2009 02:45:28 GMT"

于 2009-11-19T21:14:36.893 に答える
0

あなたの変換は正しく、データは間違っています。これが最も単純で最も可能性の高い説明です。

于 2009-11-19T21:07:49.527 に答える