ユーザーが予約を行うときにサーバーで実行されるコードがあります。そのコードは現在の世界時を取得します。
タイムゾーンに応じて時間を変更できるようになりました。現在、サーバーは米国にありますが、オーストラリアの時間を使用したいと考えています。
どうすればできますか。
私の現在のコードは次のとおりです。
booking.CreateDateTime = DateTime.Now.ToUniversalTime();
ユーザーが予約を行うときにサーバーで実行されるコードがあります。そのコードは現在の世界時を取得します。
タイムゾーンに応じて時間を変更できるようになりました。現在、サーバーは米国にありますが、オーストラリアの時間を使用したいと考えています。
どうすればできますか。
私の現在のコードは次のとおりです。
booking.CreateDateTime = DateTime.Now.ToUniversalTime();
使用できますTimeZoneInfo
DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try
{
TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
Console.WriteLine("{0} {1} is {2} local time.",
hwTime,
hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName,
TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.");
}
catch (InvalidTimeZoneException)
{
Console.WriteLine("Registry data on the Hawaiian STandard Time zone has been corrupted.");
}
たくさんの機能とサポートを備えた野田タイムを使用することをお勧めします
予約がどこで行われたかに関係なく、サーバー上の日付を UTC として個人的に保存します。この予約をクライアントに表示するときは、UTC を現地時間に戻すだけです。
または、実際にオーストラリアにいなくても、時間をオーストラリアとして表示したい場合..
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");
DateTime UKTime = DateTime.Now;
Console.WriteLine("United Kingdom Time {0}", UKTime);
DateTime CurrentUTC = UKTime.ToUniversalTime();
Console.WriteLine("UTC Time {0}", UKTime);
DateTime OzzieTime = TimeZoneInfo.ConvertTimeFromUtc(CurrentUTC, tzi);
Console.WriteLine("Ozzie Time {0}",OzzieTime);
Console.ReadLine();
どちらが生成します...
United Kingdom Time 31/10/2012 00:30:10
UTC Time 31/10/2012 00:30:10
Ozzie Time 31/10/2012 11:30:10