情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

DateTime.ToLocalTime メソッド

2013/12/12

現在の DateTime オブジェクトの値を現地時刻に変換します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public DateTime ToLocalTime()

戻り値

型: System.DateTime
Kind プロパティが Local で、以下のいずれかの値を持つオブジェクト。現在の DateTime 値と等しい現地時刻が格納されますが、変換後の値が DateTime オブジェクトの表現可能な範囲を超える場合は DateTime.MaxValue、変換後の値が DateTime オブジェクトで表現可能な範囲を下回る場合は DateTime.MinValue が格納されます。

現地時刻は、世界協定時刻 (UTC) と UTC オフセットを加算した時刻です。また、変換時には、現在の DateTime オブジェクトが表す時刻に適用される夏時間も考慮されます。

重要: 重要:

ToLocalTime メソッドでは、UTC から現地時刻への変換時に現在の調整規則のみが認識されます。その結果、現在の調整規則が実施される前の期間を変換すると、UTC と現地時刻との差が正確には反映されないことがあります。

ToLocalTime メソッドから返される値は、現在の DateTime オブジェクトの Kind プロパティによって決定されます。Kind プロパティの値によって、実行結果にどのような違いが生じるかを次の表に示します。

Kind プロパティ値

結果

Utc

DateTime のインスタンスが現地時刻に変換されます。

Local

変換は実行されません。

Unspecified

DateTime のインスタンスが UTC 時刻ベースであるものと見なされ、KindUtc の場合と同じ変換結果になります。

変換によって得られる値は、Kind プロパティが常に Local を返すような DateTime になります。したがって、同じ DateTime に対して、繰り返し ToLocalTime を適用しても、有効な結果が返されます。

呼び出し時の注意

ToLocalTime メソッドを使用して、ToUniversalTime または FromFileTimeUtc メソッドによって UTC 時刻に変換された現地時刻を復元できます。ただし、元の時刻がローカル タイム ゾーンで無効な時刻を表している場合は、復元された値とは一致しません。ToLocalTime メソッドは時間値を UTC からローカル タイム ゾーンに変換し、さらに、ローカル タイム ゾーンで有効な時間となるように調整します。

たとえば、米国の太平洋標準時ゾーンでは標準時間から夏時間への移行が 2010 年 3 月 14 日午前 2 時 00 分に起こり、そのときに時間が 1 時間進み、03:00:00 時 00 分になります。この時間間隔は無効な時刻、つまり、このタイム ゾーンには存在しない時間間隔です。次の例では、ToUniversalTime メソッドによってこの範囲内にある時間が UTC に変換され、ToLocalTime メソッドによって復元され、元の値が有効な時刻になるように調整されます。例に示すように、特定の日付と時刻の値を TimeZoneInfo.IsInvalidTime メソッドに渡すことによって、その値が変更の対象になる可能性があるかどうかを判断できます。


using System;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      DateTime date1 = new DateTime(2010, 3, 14, 2, 30, 0, DateTimeKind.Local);
      outputBlock.Text += String.Format("Invalid time: {0}",
                        TimeZoneInfo.Local.IsInvalidTime(date1)) + "\n";
      DateTime utcDate1 = date1.ToUniversalTime();
      DateTime date2 = utcDate1.ToLocalTime();
      outputBlock.Text += String.Format("{0} --> {1}", date1, date2) + "\n";
   }
}
// The example displays the following output:
//       Invalid time: True
//       3/14/2010 2:30:00 AM --> 3/14/2010 3:30:00 AM


ToLocalTime メソッドの例を次に示します。


outputBlock.Text += "Enter a date and time." + "\n";
string strDateTime = System.Console.ReadLine();

System.DateTime localDateTime;
try
{
   localDateTime = System.DateTime.Parse(strDateTime);
}
catch (System.FormatException)
{
   outputBlock.Text += "Invalid format." + "\n";
   return;
}

System.DateTime univDateTime = localDateTime.ToUniversalTime();

outputBlock.Text += String.Format("{0} local time is {1} universal time.",
                   localDateTime,
                   univDateTime) + "\n";

outputBlock.Text += "Enter a date and time in universal time." + "\n";
strDateTime = System.Console.ReadLine();

try
{
   univDateTime = System.DateTime.Parse(strDateTime);
}
catch (System.FormatException)
{
   outputBlock.Text += "Invalid format." + "\n";
   return;
}

localDateTime = univDateTime.ToLocalTime();

outputBlock.Text += String.Format("{0} universal time is {1} local time.",
                   univDateTime,
                   localDateTime) + "\n";


SpecifyKind メソッドを使用して、Kind プロパティが ToLocalTimeToUniversalTime の 2 つの変換メソッドに与える影響を示す例を次に示します。


// This code example demonstrates the DateTime Kind, Now, and
// UtcNow properties, and the SpecifyKind(), ToLocalTime(), 
// and ToUniversalTime() methods.

using System;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Get the date and time for the current moment, adjusted 
      // to the local time zone.

      DateTime saveNow = DateTime.Now;

      // Get the date and time for the current moment expressed 
      // as coordinated universal time (UTC).

      DateTime saveUtcNow = DateTime.UtcNow;
      DateTime myDt;

      // Display the value and Kind property of the current moment 
      // expressed as UTC and local time.

      DisplayNow(outputBlock, "UtcNow: ..........", saveUtcNow);
      DisplayNow(outputBlock, "Now: .............", saveNow);
      outputBlock.Text += "\n";

      // Change the Kind property of the current moment to 
      // DateTimeKind.Utc and display the result.

      myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc);
      Display(outputBlock, "Utc: .............", myDt);

      // Change the Kind property of the current moment to 
      // DateTimeKind.Local and display the result.

      myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local);
      Display(outputBlock, "Local: ...........", myDt);

      // Change the Kind property of the current moment to 
      // DateTimeKind.Unspecified and display the result.

      myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified);
      Display(outputBlock, "Unspecified: .....", myDt);
   }

   // Display the value and Kind property of a DateTime structure, the 
   // DateTime structure converted to local time, and the DateTime 
   // structure converted to universal time. 

   public static string datePatt = @"M/d/yyyy hh:mm:ss tt";
   public static void Display(System.Windows.Controls.TextBlock outputBlock, string title, DateTime inputDt)
   {
      DateTime dispDt = inputDt;
      string dtString;

      // Display the original DateTime.

      dtString = dispDt.ToString(datePatt);
      outputBlock.Text += String.Format("{0} {1}, Kind = {2}",
                        title, dtString, dispDt.Kind) + "\n";

      // Convert inputDt to local time and display the result. 
      // If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
      // If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
      // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is 
      // performed as if inputDt was universal time.

      dispDt = inputDt.ToLocalTime();
      dtString = dispDt.ToString(datePatt);
      outputBlock.Text += String.Format("  ToLocalTime:     {0}, Kind = {1}",
                        dtString, dispDt.Kind) + "\n";

      // Convert inputDt to universal time and display the result. 
      // If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
      // If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
      // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is 
      // performed as if inputDt was local time.

      dispDt = inputDt.ToUniversalTime();
      dtString = dispDt.ToString(datePatt);
      outputBlock.Text += String.Format("  ToUniversalTime: {0}, Kind = {1}",
                        dtString, dispDt.Kind) + "\n";
      outputBlock.Text += "\n";
   }

   // Display the value and Kind property for DateTime.Now and DateTime.UtcNow.

   public static void DisplayNow(System.Windows.Controls.TextBlock outputBlock, string title, DateTime inputDt)
   {
      string dtString = inputDt.ToString(datePatt);
      outputBlock.Text += String.Format("{0} {1}, Kind = {2}",
                        title, dtString, inputDt.Kind) + "\n";
   }
}

/*
This code example produces the following results:

UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc
Now: ............. 5/6/2005 02:34:42 PM, Kind = Local

Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc
  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
  ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc

Local: ........... 5/6/2005 02:34:42 PM, Kind = Local
  ToLocalTime:     5/6/2005 02:34:42 PM, Kind = Local
  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified
  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

*/


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: