2016-08-02 2 views
-1

これを修正する方法についていくつかの回答があります。私はDateTime型のオブジェクトを持っています。私はこのオブジェクトを以下のように割り当てました。DateTime.UtcNowは4時間先です

obj.TimeStamp = DateTime.UtcNow;

私は、正しい日付と時刻を取得するための適切な組み合わせやコードの操作を見つけるように見えることはできません。現在の時刻より常に4時間遅れて表示されます。

このソフトウェアは、さまざまなタイムゾーンで展開されます。

すべてのタイムゾーンでタイムスタンプが正確であることを確認する信頼できる方法はありますか。サーバーの時刻設定が正しい。

ありがとうございます。

+0

あなたのサーバーは常に同じタイムゾーンになるため、ユーザーのタイムゾーンを追跡し、各リクエストの時刻を変換する必要があります。 – dckuehn

+0

UtcNowはあなたに世界中の不気味な時間を与えます。オンラインで読むことができます。あなたのUTCが他のUTCよりも4時間先にある場合、あなたの1人が間違ってクロックを設定しています。 – eugeneK

+1

ちょうどUTCとして返信し、クライアント側で現地時間に変換を処理させます –

答えて

0

興味深い質問!日時は解決すべき難しい問題です。それはとてもシンプルなようですが、実際に行うのはとても難しいです。時間帯や夏時間になると、実際にはそれよりもずっと難しくなっています。

優れたNoda Timeライブラリを見てください。あなたがそれを使用しなくても、ユーザーガイドは日時がなぜ解決するのが難しいのかについての素晴らしい洞察を提供します。

あなたのタイムゾーンが現在夏時間を観測している東部時間であり、タイムゾーンがUTCの4時間遅れているという事実に関連していると思われます。

ユーザーに時間を提示するためには、あなたは彼らがでている何時間帯を知る必要があります。彼らはニューヨークにいる場合、彼らはカリフォルニアにいるならば、あなたは、UTC-04:00を使用する必要がありますUTC-08:00を使用する必要があり、ニューデリーにいる場合はUTC+05:30を使用する必要があります。

しかし、これは夏時間の観測をやめるときに変更される可能性がありますが、これには厳しいルールがないため注意が必要です。東部時間は11月の最初の日曜日の夏時間の観測をやめ、英国時間は10月の最後の日曜日に停止します。インド時間は夏時間がなく、南半球地域では冬季の夏時間を観測します(少なくともNorthern半球領域)。

幸運を祈る!

+0

ありがとうございます。 – LK22

0

私は、MSDNの記事でノートを読んで、この質問が古いですけど、...

var localDate = DateTime.UtcNow.ToLocalTime() 

https://msdn.microsoft.com/en-us/library/system.datetime.tolocaltime(v=vs.110).aspx

。これは完璧ではありません。しかし、サーバ時間を得る方法を探しているなら、これはあなたがあまりにも夢中になるほど近づけるための迅速かつ簡単な方法です。

関連する問題