たとえば、ユーザーがニューヨーク(GMT-5)に、サーバーがインドにある(GMT + 5:30)としましょう。
ユーザーが「ローカル」時刻を午前10時(EST)と見なすと、サーバーには「午後7時30分(IST)」のローカル時刻が表示されます。ただし、両方の場所でUTCを使用すると、ユーザーはUTC時刻が3pmになり、サーバーにはUTC時刻が3pmと表示されます。
すべての場所でUTCを使用しますが、ユーザーのタイムゾーンの基準を維持することで、UTCで常に作業することができますが、時間をユーザーに表示したい場合は「ローカル」時間に変換します。
また、サーバーが仮想サーバーの場合は、特にホストされている場所に頼ることはできません。また、ホスティング会社がサーバーを設定する時間帯を想定することもできません。データベースに日付時刻を格納するときは、常にDateTime.UtcNow
を使用して防御的にコードすることをお勧めします。
TimeZoneInfo.GetSystemTimeZones()
:あなたがからのタイムゾーンのリストを見つけることができ、FYI
DateTime utcTime = new DateTime(2013, 03, 25, 10, 20, 00);
TimeZoneInfo usersTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime usersLocalTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, usersTimeZone);
Console.WriteLine(utcTime.ToString("hh:mm:ss");
Console.WriteLine(usersLocalTime.ToString("hh:mm:ss");
:
は、あなたが次のことを行う必要がありますユーザーのタイムゾーンに戻って、このUTC時刻に変換するには
これは、プリントアウトする必要があります
10:20:00
05:20:00
をあなたが見ることができるように、あなたは、ユーザーのタイムゾーンを知っておく必要があります。
- が
- は、自分のマシンのタイムゾーンを検出して、フォーム
に戻ってそれを投稿するには、いくつかのJavaScriptを使用して、ユーザーの好みで自分のタイムゾーンを選択するユーザーがいる:ユーザーの時間を知るには2つの方法があります。
私は、第2のオプションが人々にとってより困難なものになる可能性があるので、最初のオプションを提案します。例えば、彼らが英国に拠点を置き、週に州に飛んでいるならば。すべてがゾーンを変え、実現しないかもしれません!
これは@JonSkeetのためのものです、彼は日時の質問を愛しています:) – mattytommo
Hmm。それが接続されているかどうかを尋ねる人ではありませんが、サーバーの日付/時刻は正しいですか?少なくとも、それはあなたの箱のものと一致しますか? – FrankieTheKneeMan
ALSO:サーバーはどのタイムゾーンに、どのタイムゾーンにいますか? – FrankieTheKneeMan