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

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

C#のDateTime.ToOADate()メソッドは、DateTime構造体のインスタンスが持つ日付・時刻の値を、それに相当する「OLEオートメーション日付(OLE Automation Date)」に変換するためのメソッドです。

OLEオートメーション日付とは、1899年12月30日を基準日(0.0)とし、そこからの経過日数を倍精度浮動小数点数(double)で表現した形式です。整数部分が日数、小数部分が時刻(1日のうちの割合)を表します。ExcelなどMicrosoft Office製品やCOMコンポーネントとの間で日付データをやり取りする際によく使われる形式です。

構文

ToOADate()メソッドの構文は以下の通りです。引数は不要で、戻り値としてdouble型のOLEオートメーション日付を返します。

public double ToOADate();

使用例1:指定した日時を変換する

まずは、具体的な日時を指定してToOADate()メソッドを実装する例を見てみましょう。

using System;

public class Demo {
    public static void Main() {
        // 2019年10月11日 9時10分35秒 のDateTimeを作成
        DateTime d = new DateTime(2019, 10, 11, 9, 10, 35);
        Console.WriteLine("Date = {0}", d);

        // OLEオートメーション日付に変換
        double res = d.ToOADate();
        Console.WriteLine("OLE Automation date = {0}", res);
    }
}

出力結果

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

Date = 10/11/2019 9:10:35 AM
OLE Automation date = 43749.382349537

この例では、2019年10月11日が基準日から43749日経過していることを示しており、小数部分「0.382349537」が午前9時10分35秒という時刻に相当します。

使用例2:現在の日時を変換する

続いて、DateTime.Nowプロパティで取得した現在の日時を変換する例です。

using System;

public class Demo {
    public static void Main() {
        // 現在の日時を取得
        DateTime d = DateTime.Now;
        Console.WriteLine("Date = {0}", d);

        // OLEオートメーション日付に変換
        double res = d.ToOADate();
        Console.WriteLine("OLE Automation date = {0}", res);
    }
}

出力結果

実行したタイミングによって出力は変わりますが、例えば以下のようになります。

Date = 10/16/2019 8:50:25 AM
OLE Automation date = 43754.3683518634

注意点

ToOADate()メソッドを使用する際には、いくつか留意すべき点があります。

  • 変換可能な範囲は西暦9999年12月31日までであり、それより後の日付を変換しようとするとOverflowExceptionがスローされます。
  • MinValue(0001年1月1日)より前の値も変換できません。
  • 逆にOLEオートメーション日付からDateTimeへ変換したい場合は、DateTime.FromOADate()メソッドを使用します。

Excelとの連携など、COMベースのシステムと日付データを交換する場面では非常に便利なメソッドなので、ぜひ活用してみてください。

  1. C#のDateTime.AddYears()メソッドとは?使い方をわかりやすく解説

    C#のDateTime.AddYears()メソッドは、このインスタンスが表す日時に指定した年数を加算し、その結果を新しいDateTimeとして返します。DateTimeは不変(イミュータブル)な構造体であるため、元のインスタンスの値が変更されることはありません。構文public DateTime AddYears (int yrs);パラメータ yrs には、加算する年数を整数で指定します。年数を減算したい場合は、負の値を渡してください。押さえておきたいポイント戻り値は計算結果を表す新しいDateTimeインスタンスで、元の日時には影響しません。うるう日の2月29日に対して加算・減算を行い、

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

    C#のDateTime.ToLongDateString()メソッドは、現在のDateTimeオブジェクトが持つ日付の値を、それに対応する「長い日付形式」の文字列表現に変換するために使用されます。このメソッドは引数を受け取らず、戻り値として文字列(string)を返します。なお、出力される書式は実行環境のCurrentCulture(現在のカルチャ)に依存する点が特徴です。構文ToLongDateString()メソッドの構文は以下のとおりです。public string ToLongDateString ();使用例1:基本的な使い方まずは、具体的な日時を指定してToLongDateStri