C#의 DateTime.ToOADate() 메서드는 현재 DateTime 인스턴스의 값을 이에 상응하는 OLE Automation 날짜(double 타입)로 변환하는 데 사용됩니다.
OLE Automation 날짜는 Excel 등 Microsoft Office 제품군에서 날짜와 시간을 표현할 때 사용되는 형식으로, 1899년 12월 30일을 기준일(0.0)로 하여 경과한 일수를 부동소수점 값으로 나타냅니다. 소수점 이하 값은 하루 중 시간을 비율로 표현합니다.
구문
메서드의 기본 구문은 다음과 같습니다.
public double ToOADate();
예제 1: 특정 날짜 변환하기
다음은 DateTime.ToOADate() 메서드를 사용하여 지정된 날짜를 OLE Automation 날짜로 변환하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 10, 11, 9, 10, 35);
Console.WriteLine("Date = {0}", d);
double res = d.ToOADate();
Console.WriteLine("OLE Automation date = {0}", res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Date = 10/11/2019 9:10:35 AM OLE Automation date = 43749.382349537
예제 2: 현재 시간 변환하기
이번에는 DateTime.Now를 사용하여 현재 시스템 시간을 OLE Automation 날짜로 변환해 보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTime d = DateTime.Now;
Console.WriteLine("Date = {0}", d);
double res = d.ToOADate();
Console.WriteLine("OLE Automation date = {0}", res);
}
}출력 결과
실행 시점에 따라 출력값은 달라지며, 위 예제에서는 다음과 같은 결과가 나왔습니다.
Date = 10/16/2019 8:50:25 AM OLE Automation date = 43754.3683518634
정리
DateTime.ToOADate() 메서드는 C#에서 날짜 데이터를 Excel과 같은 OLE 호환 애플리케이션으로 전달하거나, COM 상호 운용성이 필요한 경우 유용하게 활용됩니다. 반환값은 double 타입이며, 정수 부분은 기준일(1899년 12월 30일)로부터의 일수를, 소수 부분은 해당 일의 시간 비율을 나타냅니다. 반대로 OLE Automation 날짜를 DateTime으로 되돌리려면 DateTime.FromOADate() 메서드를 사용하면 됩니다.