Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# DateTime.FromOADate() 메서드 완벽 정리 – OLE 자동화 날짜 변환 방법

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이 발생한다는 점도 함께 기억해 두면 좋습니다.