C#のDateTime.ToLocalTime()メソッドの使い方をわかりやすく解説
C#のDateTime.ToLocalTime()メソッドは、現在のDateTimeオブジェクトの値をローカル時刻(現地時間)に変換するために使用されます。このメソッドは、DateTimeオブジェクトが保持する時刻の種類(Kindプロパティ)に基づいて、適切なタイムゾーン変換を行います。
構文
ToLocalTime()メソッドの構文は以下の通りです。
public DateTime ToLocalTime ();
使用例1:現在日時をローカル時刻に変換する
まず、DateTime.Nowで取得した現在の日時に対して、ToLocalTime()メソッドを使用する例を見てみましょう。
using System;
public class Demo {
public static void Main() {
DateTime d = DateTime.Now;
Console.WriteLine("Date = {0}", d);
DateTime res = d.ToLocalTime();
Console.WriteLine("Local Time = {0}", res);
}
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
Date = 10/16/2019 8:28:29 AM Local Time = 10/16/2019 8:28:29 AM
この例では、すでにローカル時刻で取得したDateTimeオブジェクトに対して変換を行っているため、元の値と同じ結果になっています。
使用例2:指定した日時をローカル時刻に変換する
次に、コンストラクタで特定の日時を指定し、その値をToLocalTime()メソッドで変換する例を見てみましょう。
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 10, 11, 9, 10, 45);
Console.WriteLine("Date = {0}", d);
DateTime res = d.ToLocalTime();
Console.WriteLine("Local Time = {0}", res);
}
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
Date = 10/11/2019 9:10:45 AM Local Time = 10/11/2019 9:10:45 AM
補足:Kindプロパティによる動作の違い
ToLocalTime()メソッドの実際の変換結果は、DateTimeオブジェクトのKindプロパティの値によって異なります。
- DateTimeKind.Localの場合:値はそのまま返されます(変換されません)。
- DateTimeKind.Utcの場合:UTCから実行環境のローカル時刻へ変換されます。
- DateTimeKind.Unspecifiedの場合:値はUTCとして扱われ、ローカル時刻へ変換されます。
このように、ToLocalTime()メソッドはUTCとローカル時刻の相互運用において重要な役割を果たします。特にサーバーとクライアントでタイムゾーンが異なるシステムを開発する際には、Kindプロパティの状態を意識して使用することが推奨されます。
-
C#のDateTime.AddYears()メソッドとは?使い方をわかりやすく解説
C#のDateTime.AddYears()メソッドは、このインスタンスが表す日時に指定した年数を加算し、その結果を新しいDateTimeとして返します。DateTimeは不変(イミュータブル)な構造体であるため、元のインスタンスの値が変更されることはありません。構文public DateTime AddYears (int yrs);パラメータ yrs には、加算する年数を整数で指定します。年数を減算したい場合は、負の値を渡してください。押さえておきたいポイント戻り値は計算結果を表す新しいDateTimeインスタンスで、元の日時には影響しません。うるう日の2月29日に対して加算・減算を行い、
-
C#のDateTime.AddHours()メソッドの使い方を徹底解説
C#のDateTime.AddHours()メソッドは、指定した時間数を現在のDateTimeインスタンスの値に加算するためのメソッドです。重要なポイントとして、このメソッドは元のDateTimeオブジェクトを変更せず、計算結果を含む新しいDateTimeオブジェクトを返します。基本仕様DateTimeは不変(イミュータブル)な構造体のため、AddHours()を呼び出しても元の値は変わりません。戻り値は加算後の日時を持つ新しいDateTimeです。構文public DateTime AddHours (double hrs);パラメータ hrs には加算する時間数を指定します。負の値を渡すこ