タイムゾーンを取得する.NET Framework 2.0以前タイムゾーンに関する情報はTimeZoneクラスにより取得できます。CurrentTimeZoneプロパティにより、現在のコンピュータシステムのタイムゾーンを取得できます。 なお、こちらで紹介しているように、ローカル時刻をUTCに変換するには、DateTime.ToUniversalTimeメソッドを、UTCからローカル時刻に変更するには、DateTime.ToLocalTimeメソッドを使うこともできます。 [VB.NET] '現在のローカル時間を取得 Dim nowTime As DateTime = DateTime.Now Console.WriteLine("現在の日時:{0}", nowTime) '世界協定時刻(UTC: Coordinated Universal Time)オフセットの取得 Dim utcOffset As TimeSpan = _ System.TimeZone.CurrentTimeZone.GetUtcOffset(nowTime) Console.WriteLine("GetUtcOffset:{0}", utcOffset) '現地時間に対応する世界協定時刻の取得 Dim utc As DateTime = _ System.TimeZone.CurrentTimeZone.ToUniversalTime(nowTime) Console.WriteLine("ToUniversalTime:{0}", utc) '世界協定時刻に対応する現地時間の取得 Dim localTime As DateTime = _ System.TimeZone.CurrentTimeZone.ToLocalTime(utc) Console.WriteLine("ToLocalTime:{0}", localTime) [C#] //現在のローカル時間を取得 DateTime nowTime = DateTime.Now; Console.WriteLine("現在の日時:{0}", nowTime); //世界協定時刻(UTC: Coordinated Universal Time)オフセットの取得 TimeSpan utcOffset = System.TimeZone.CurrentTimeZone.GetUtcOffset(nowTime); Console.WriteLine("GetUtcOffset:{0}", utcOffset); //現地時間に対応する世界協定時刻の取得 DateTime utc = System.TimeZone.CurrentTimeZone.ToUniversalTime(nowTime); Console.WriteLine("ToUniversalTime:{0}", utc); //世界協定時刻に対応する現地時間の取得 DateTime localTime = System.TimeZone.CurrentTimeZone.ToLocalTime(utc); Console.WriteLine("ToLocalTime:{0}", localTime); 出力例: 現在の日時:2003/12/03 18:57:13 GetUtcOffset:09:00:00 ToUniversalTime:2003/12/03 9:57:13 ToLocalTime:2003/12/03 18:57:13 .NET Framework 3.5以降.NET Framework 3.5からはTimeZoneクラスの代わりにTimeZoneInfoクラスを使用することが推奨されています。ただしTimeZoneInfoクラスはWindows XP SP2以降のOSでのみ使用できます。 現在のコンピュータシステムのタイムゾーンは、TimeZoneInfo.Localプロパティで取得できます。 UTCオフセット(タイムゾーン標準時とUTCとの差、時差)は、BaseUtcOffsetプロパティまたはGetUtcOffsetメソッドで取得できます。GetUtcOffsetメソッドはBaseUtcOffsetプロパティと違い、特定の日時での時間差を返し、様々な調整規則も適用します。 タイムゾーン標準時をUTCに変換するにはConvertTimeToUtcメソッドを、UTCをタイムゾーン標準時に変換するにはConvertTimeFromUtcメソッドを使用します。または、ConvertTimeメソッドを使って変換することもできます。なおこれらのメソッドの結果は、TimeZoneクラスのToUniversalTimeメソッドとToLocalTimeメソッドの結果とは異なる可能性があります。詳しくは、こちらで説明します。 [VB.NET] '現在のローカル時間を取得 Dim nowTime As DateTime = DateTime.Now Console.WriteLine("現在の日時:{0}", nowTime) '世界協定時刻(UTC: Coordinated Universal Time)オフセットの取得 Dim baseUtcOffset As TimeSpan = System.TimeZoneInfo.Local.BaseUtcOffset Console.WriteLine("BaseUtcOffset:{0}", baseUtcOffset) '現在の時間でのUTCオフセットの取得 Dim utcOffset As TimeSpan = System.TimeZoneInfo.Local.GetUtcOffset(nowTime) Console.WriteLine("GetUtcOffset:{0}", utcOffset) '現地時間に対応する世界協定時刻の取得 Dim utc As DateTime = _ System.TimeZoneInfo.ConvertTimeToUtc(nowTime, System.TimeZoneInfo.Local) Console.WriteLine("ToUniversalTime:{0}", utc, System.TimeZoneInfo.Local) '世界協定時刻に対応する現地時間の取得 Dim localTime As DateTime = _ System.TimeZoneInfo.ConvertTimeFromUtc(utc, System.TimeZoneInfo.Local) Console.WriteLine("ToLocalTime:{0}", localTime) [C#] //現在のローカル時間を取得 DateTime nowTime = DateTime.Now; Console.WriteLine("現在の日時:{0}", nowTime); //世界協定時刻(UTC: Coordinated Universal Time)オフセットの取得 TimeSpan baseUtcOffset = System.TimeZoneInfo.Local.BaseUtcOffset; Console.WriteLine("BaseUtcOffset:{0}", baseUtcOffset); //現在の時間でのUTCオフセットの取得 TimeSpan utcOffset = System.TimeZoneInfo.Local.GetUtcOffset(nowTime); Console.WriteLine("GetUtcOffset:{0}", utcOffset); //現地時間に対応する世界協定時刻の取得 DateTime utc = System.TimeZoneInfo.ConvertTimeToUtc(nowTime, System.TimeZoneInfo.Local); Console.WriteLine("ToUniversalTime:{0}", utc, System.TimeZoneInfo.Local); //世界協定時刻に対応する現地時間の取得 DateTime localTime = System.TimeZoneInfo.ConvertTimeFromUtc(utc, System.TimeZoneInfo.Local); Console.WriteLine("ToLocalTime:{0}", localTime);
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|