1

私は Windows Phone 8 を使用しており、DateTime オブジェクトを UNIX タイムスタンプに変換する必要があります。

その方法に関する投稿がたくさんあることは知っていますが、奇妙な間違いがあり、わかりません。

私はこれをやっています:

double val = (value.Ticks - New DateTime(1970,1,1).Ticks) / TimeSpan.TicksPerSecond;

ここで、値は UNIX タイムスタンプに変換する DateTime オブジェクトです。値に正しい時刻が含まれていることはわかっています (デバッグ中に、正しい日付と時刻が含まれていることがわかります)

ただし、変換された UNIX 値は常に +2 時間オフです。タイムゾーンに問題があるはずです。

誰かが私を助けることができますか?UTCまたはローカル以外の特定のタイムゾーンに変換する方法がないため、WPでタイムゾーンを扱うのは非常に面倒です。

4

1 に答える 1

2

このドキュメンテーションによると、 の 3 引数コンストラクターは次のDateTimeとおりです。

DateTime(Int32, Int32, Int32)

"DateTime 構造体の新しいインスタンスを指定された年、月、日に初期化します。" タイム ゾーンを指定する方法がなく、ドキュメントでも結果のタイム ゾーンが指定されていません。現地時間だと思います。

別のコンストラクタがあります:

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

「DateTime 構造体の新しいインスタンスを、指定された年、月、日、時、分、秒、協定世界時 (UTC) または現地時間に初期化します」。

交換してみる

New DateTime(1970,1,1).Ticks

New DateTime(1970,1,1,0,0,0,DateTimeKind.Utc).Ticks

1970-01-01 00:00:00 UTCを表す DateTime を取得します(構文を正しく覚えている場合)。

于 2013-08-14T20:34:44.433 に答える