C#のDateTime.ToBinary()メソッドの使い方を徹底解説
DateTime.ToBinary()メソッドとは
C#のDateTime.ToBinary()メソッドは、現在のDateTimeオブジェクトを、後から同じオブジェクトとして復元できる64ビットのバイナリ値にシリアル化するためのメソッドです。
戻り値は64ビット符号付き整数(long型)となり、この値を保存しておけば、あとから日付と時刻の情報を正確に再現することが可能です。
構文
このメソッドの構文は以下の通りです。
public long ToBinary ();
引数は取らず、呼び出し元のDateTimeオブジェクトをシリアル化した結果をlong型で返します。
使用例1:固定の日時をシリアル化する
まずは、特定の日時を持つDateTimeオブジェクトに対してToBinary()メソッドを使用する例を見てみましょう。
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 10, 10, 8, 10, 40);
Console.WriteLine("Date = {0}", d);
long res = d.ToBinary();
Console.WriteLine("64-bit binary value : {0}", res);
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
Date = 10/10/2019 8:10:40 AM 64-bit binary value : 637062918400000000
使用例2:現在日時をシリアル化する
続いて、DateTime.Nowで取得した現在日時をToBinary()メソッドでシリアル化する例です。
using System;
public class Demo {
public static void Main() {
DateTime d = DateTime.Now;
Console.WriteLine("Date = {0}", d);
long res = d.ToBinary();
Console.WriteLine("64-bit binary value : {0}", res);
}
}出力結果
実行したタイミングによって値は変わりますが、例えば次のような出力になります。
Date = 10/16/2019 8:15:56 AM 64-bit binary value : -8586303931293472296
ポイント:Kindプロパティも一緒に保持される
ToBinary()メソッドで生成される64ビットの値には、日時の情報だけでなく、DateTimeオブジェクトが持つKindプロパティ(Local・Utc・Unspecified)の情報もエンコードされています。これにより、ローカル時刻とUTC(協定世界時)の区別を保ったままシリアル化できるのが特徴です。
補足:FromBinary()メソッドで復元する
シリアル化された値から元のDateTimeオブジェクトを復元したい場合は、静的メソッドであるDateTime.FromBinary(long)を使用します。ファイルやデータベースに日時情報を保存し、後から読み込んで再利用するようなシナリオで、ToBinary()とFromBinary()はセットで活用されます。
-
C#のDateTime.AddDays()メソッドの使い方を徹底解説!日付に日数を加算する方法
C#のDateTime.AddDays()メソッドは、現在のDateTimeインスタンスの値に指定した日数を加算するためのメソッドです。このメソッドは元のDateTimeオブジェクトを変更するのではなく、計算結果として新しいDateTimeオブジェクトを返します。そのため、戻り値を受け取る変数が必要になる点に注意しましょう。 基本構文 DateTime.AddDays()メソッドの構文は以下のとおりです。 public DateTime AddDays (double days); 引数 days には加算したい日数をdouble型で指定します。負の値を渡すことで、日付を減算(過去の日付に移動
-
C#のDateTime.Add()メソッドとは?構文と使い方を実例付きで解説
C#のDateTime.Add()メソッドは、指定したTimeSpanの値を現在のDateTimeインスタンスに加算し、その結果として新しいDateTimeオブジェクトを返すメソッドです。元のインスタンス自体は変更されず、計算結果が新しいオブジェクトとして生成される点が特徴です。基本構文DateTime.Add()メソッドの構文は以下の通りです。public DateTime Add (TimeSpan val);引数 val には、加算する時間間隔を表す TimeSpan を指定します。正の値を渡せば日時が進み、負の値を渡せば日時が遡ります。使用例1:日付を加算するまずは、115日分のTim