C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のDateTime.SpecifyKind()メソッドとは?使い方とサンプルコードを解説

C#のDateTime.SpecifyKind()メソッドは、指定されたDateTimeオブジェクトと同じタイマー刻み(Ticks)の値を持つ新しいDateTimeオブジェクトを作成し、その日時が「ローカル時刻」「協定世界時(UTC)」「いずれでもない」のどれであるかを、DateTimeKindの値に基づいて指定するためのメソッドです。

このメソッドは、既存の日時データに対して種類(Kind)の情報だけを付け替えたい場合に便利です。なお、元のDateTimeオブジェクト自体は変更されず、新しいインスタンスが返される点に注意してください。

構文

DateTime.SpecifyKind()メソッドの構文は以下のとおりです。

public static DateTime SpecifyKind (DateTime d, DateTimeKind kind);

パラメータ

  • d: 種類(Kind)を指定したい元のDateTimeオブジェクト
  • kind: 新しいオブジェクトがローカル時刻、UTC、またはどちらでもないことを示すDateTimeKind列挙体の値

DateTimeKindの主な値

  • DateTimeKind.Local: ローカル時刻を表す
  • DateTimeKind.Utc: 協定世界時(UTC)を表す
  • DateTimeKind.Unspecified: ローカル時刻かUTCかが指定されていないことを表す

使用例1: ローカル時刻として指定する

まず、DateTime.SpecifyKind()メソッドを使って、日時をローカル時刻として指定する例を見てみましょう。

using System;
using System.Globalization;
public class Demo {
   public static void Main() {
      DateTime d = new DateTime(2019, 10, 11, 11, 10, 42);
      DateTime res = DateTime.SpecifyKind(d, DateTimeKind.Local);
      Console.WriteLine("Kind = " + res.Kind);
   }
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

Kind = Local

使用例2: UTCとして指定する

次に、同じ日時を協定世界時(UTC)として指定する例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTime d = new DateTime(2019, 11, 25, 10, 20, 35);
      DateTime res = DateTime.SpecifyKind(d, DateTimeKind.Utc);
      Console.WriteLine("Kind = " + res.Kind);
   }
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

Kind = Utc

まとめ

DateTime.SpecifyKind()メソッドを使用すると、タイマー刻み(Ticks)の値を変更することなく、DateTimeオブジェクトの時刻の種類(Kind)だけをLocal、Utc、Unspecifiedのいずれかに設定できます。日付や時刻の値そのものは変換されず、あくまで「種類」の情報を付け直すメソッドである点を理解しておきましょう。実際に時刻を変換したい場合は、ToUniversalTime()メソッドやToLocalTime()メソッドと組み合わせて使用します。

  1. C#のDateTime.AddHours()メソッドの使い方を徹底解説

    C#のDateTime.AddHours()メソッドは、指定した時間数を現在のDateTimeインスタンスの値に加算するためのメソッドです。重要なポイントとして、このメソッドは元のDateTimeオブジェクトを変更せず、計算結果を含む新しいDateTimeオブジェクトを返します。基本仕様DateTimeは不変(イミュータブル)な構造体のため、AddHours()を呼び出しても元の値は変わりません。戻り値は加算後の日時を持つ新しいDateTimeです。構文public DateTime AddHours (double hrs);パラメータ hrs には加算する時間数を指定します。負の値を渡すこ

  2. C#のDateTime.AddDays()メソッドの使い方を徹底解説!日付に日数を加算する方法

    C#のDateTime.AddDays()メソッドは、現在のDateTimeインスタンスの値に指定した日数を加算するためのメソッドです。このメソッドは元のDateTimeオブジェクトを変更するのではなく、計算結果として新しいDateTimeオブジェクトを返します。そのため、戻り値を受け取る変数が必要になる点に注意しましょう。 基本構文 DateTime.AddDays()メソッドの構文は以下のとおりです。 public DateTime AddDays (double days); 引数 days には加算したい日数をdouble型で指定します。負の値を渡すことで、日付を減算(過去の日付に移動