C#의 DateTime.FromOADate() 메서드는 지정된 OLE 자동화 날짜(OLE Automation Date)에 해당하는 DateTime 객체를 반환하는 정적(static) 메서드입니다. 주로 Excel이나 Access 등 Microsoft Office 제품에서 저장된 날짜 데이터를 .NET의 DateTime 형식으로 변환할 때 유용하게 활용됩니다.
DateTime.FromOADate() 구문
메서드의 기본 구문은 다음과 같습니다.
public static DateTime FromOADate (double val);
여기서 매개변수 val은 OLE 자동화 날짜 값을 나타내는 double형 숫자입니다. OLE 자동화 날짜는 1899년 12월 30일을 기준일(값 0.0)로 하며, 소수점 이하 값은 하루 중 시간을 의미합니다.
예제 1: 기본적인 사용법
다음은 DateTime.FromOADate() 메서드를 사용하는 간단한 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTime d1 = DateTime.FromOADate(1.0);
Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
}
}실행 결과
DateTime = 31 December 1899, 12:00:00
위 결과에서 볼 수 있듯이, OLE 자동화 날짜 값 1.0은 기준일인 1899년 12월 30일의 다음 날, 즉 1899년 12월 31일로 변환됩니다.
예제 2: 다양한 값으로 변환하기
이번에는 서로 다른 두 개의 OLE 자동화 날짜 값을 동시에 변환해 보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTime d1 = DateTime.FromOADate(375765.0);
DateTime d2 = DateTime.FromOADate(0.0);
Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
Console.WriteLine("New DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
}
}실행 결과
DateTime = 21 October 2928, 12:00:00 New DateTime = 30 December 1899, 12:00:00
값 375765.0은 2928년 10월 21일로 변환되었으며, 값 0.0은 OLE 자동화 날짜의 기준일인 1899년 12월 30일을 그대로 반환합니다.
정리
DateTime.FromOADate() 메서드는 OLE 자동화 날짜(double형)를 C#의 DateTime 객체로 손쉽게 변환해 주는 도구입니다. 특히 Office 문서나 레거시 시스템에서 가져온 날짜 데이터를 처리할 때 매우 유용하며, 유효 범위(9999년 12월 31일까지)를 벗어난 값이 입력되면 ArgumentException이 발생한다는 점도 함께 기억해 두면 좋습니다.