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ベースのシステムと日付データを交換する場面では非常に便利なメソッドなので、ぜひ活用してみてください。
-
C#のDateTime.AddYears()メソッドとは?使い方をわかりやすく解説
C#のDateTime.AddYears()メソッドは、このインスタンスが表す日時に指定した年数を加算し、その結果を新しいDateTimeとして返します。DateTimeは不変(イミュータブル)な構造体であるため、元のインスタンスの値が変更されることはありません。構文public DateTime AddYears (int yrs);パラメータ yrs には、加算する年数を整数で指定します。年数を減算したい場合は、負の値を渡してください。押さえておきたいポイント戻り値は計算結果を表す新しいDateTimeインスタンスで、元の日時には影響しません。うるう日の2月29日に対して加算・減算を行い、
-
C#のDateTime.ToLongDateString()メソッドとは?使い方とサンプルコードを解説
C#のDateTime.ToLongDateString()メソッドは、現在のDateTimeオブジェクトが持つ日付の値を、それに対応する「長い日付形式」の文字列表現に変換するために使用されます。このメソッドは引数を受け取らず、戻り値として文字列(string)を返します。なお、出力される書式は実行環境のCurrentCulture(現在のカルチャ)に依存する点が特徴です。構文ToLongDateString()メソッドの構文は以下のとおりです。public string ToLongDateString ();使用例1:基本的な使い方まずは、具体的な日時を指定してToLongDateStri