C#의 DateTime.IsDaylightSavingTime() 메서드는 해당 DateTime 인스턴스가 현재 시간대의 일광 절약 시간(Daylight Saving Time, DST) 범위에 포함되는지 여부를 판별할 때 사용됩니다.
이 메서드는 반환 타입이 bool이며, 일광 절약 시간 범위 내라면 true, 그렇지 않다면 false를 반환합니다. 서머타임을 적용하는 국가에서 시간 처리 로직을 구현할 때 유용하게 활용할 수 있습니다.
문법(Syntax)
메서드의 기본 문법은 다음과 같습니다.
public bool IsDaylightSavingTime ();
매개변수는 받지 않으며, 호출한 DateTime 인스턴스 자체를 기준으로 판별합니다.
예제 1: 특정 날짜로 일광 절약 시간 확인하기
먼저 특정 날짜와 시간을 지정하여 IsDaylightSavingTime() 메서드를 호출하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 10, 11, 7, 10, 40);
bool res = d.IsDaylightSavingTime();
if (res)
Console.WriteLine("TRUE: 이 DateTime 인스턴스는 현재 시간대의 일광 절약 시간 범위에 포함됩니다.");
else
Console.WriteLine("FALSE: 이 DateTime 인스턴스는 현재 시간대의 일광 절약 시간 범위에 포함되지 않습니다.");
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
FALSE: 이 DateTime 인스턴스는 현재 시간대의 일광 절약 시간 범위에 포함되지 않습니다.
2019년 10월 11일 오전 7시 10분 40초는 실행 환경의 시간대 기준으로 일광 절약 시간 범위에 해당하지 않기 때문에 false가 반환되었습니다.
예제 2: 현재 시간으로 일광 절약 시간 확인하기
이번에는 DateTime.Now를 사용해 시스템의 현재 시간을 기준으로 판별하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTime d = DateTime.Now;
bool res = d.IsDaylightSavingTime();
if (res)
Console.WriteLine("TRUE: 이 DateTime 인스턴스는 현재 시간대의 일광 절약 시간 범위에 포함됩니다.");
else
Console.WriteLine("FALSE: 이 DateTime 인스턴스는 현재 시간대의 일광 절약 시간 범위에 포함되지 않습니다.");
}
}실행 결과
실행 시점에 따라 결과가 달라질 수 있으며, 아래는 서머타임이 적용되지 않은 시점에 실행한 결과입니다.
FALSE: 이 DateTime 인스턴스는 현재 시간대의 일광 절약 시간 범위에 포함되지 않습니다.
참고 사항
IsDaylightSavingTime() 메서드의 결과는 프로그램이 실행되는 로컬 시간대 설정에 따라 달라집니다. 한국처럼 서머타임을 사용하지 않는 시간대에서는 항상 false가 반환됩니다. 반면 미국이나 유럽 등 일광 절약 시간을 적용하는 지역에서는 날짜와 시간에 따라 true 또는 false가 결정됩니다.