だから私は過去4時間この問題を理解しようとしてきました。DateTime.Now on Windows Azureは2013年1月10日ですが、現地時間は2013年1月9日です。私は、UTCを実行してDateTime.Now.ToLocalTime()を呼び出して整列させるために本のすべてを試しましたが、それでも問題を解決できません。
4 に答える
private DateTime ConvertToCentral()
{
DateTime timeUtc = DateTime.UtcNow;
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
return cstTime;
}
答えはGauravが投稿したものと同じです-Azureサーバーは現地時間ではなくUTC(グリニッジ標準時)で動作します。たとえば、アリゾナはUTC-7時間なので、UTCを取得するために現地時間に7時間を追加します。Azureポータルとブラウザーは現地時間に合わせて調整される場合がありますが、コードでDateTime.Nowを使用する場合は、DateTime.Now.UTCを使用する必要があります。Azureで実行されているアプリのユーザー表示を調整する場合は、次を追加します。 TimeZoneOffset(つまり、-7)のServiceConfiguration設定で、DateTime.Now.AddHours(TimeZoneOffset)を表示します。
現在、Windows Azure VMはUTCを使用しており、使用していなくても、同じタイムゾーンを使用することを期待するべきではありません。
分散アプリケーションでは、UTCをできるだけ頻繁に使用すると、面倒な作業を大幅に節約できます。UTCを使用できない場合は、UTCを現地時間と一緒に使用するか、現地時間のみを使用しますが、毎回現地時間を使用します。現在のタイムゾーンを具体的に知っておく必要があります。
これらの考慮事項を無視すると、2555年に自分自身を見つけることもできます(冗談ではありません-それは本当です)。
Windows Azureマシンを使用するのはあなた次第なので、別のタイムゾーンが必要な場合は、すぐに設定してください。
最も簡単なアプローチは、非常に単純な起動タスクを作成し、Windowsタイムゾーンユーティリティであるtzutilを使用することです。以下を使用します。
tzutil /s "GMT Standard Time"
これは、デフォルトでWindows Server2008R2またはWindowsServer2012イメージにのみインストールされます。
詳細はこちら:http ://wely-lau.net/2011/06/26/setting-timezone-in-windows-azure-3/