표준 시간대 개요

TimeZoneInfo 클래스는 표준 시간대 인식 애플리케이션의 생성을 간소화합니다. 이 TimeZone 클래스는 현지 표준 시간대 및 UTC(협정 세계시) 작업을 지원합니다. TimeZoneInfo 클래스는 이러한 영역과 레지스트리에 미리 정의된 정보에 대한 모든 표준 시간대를 모두 지원합니다. TimeZoneInfo를 사용하여 시스템에 해당 정보가 없는 사용자 지정 표준 시간대를 정의할 수 있습니다.

표준 시간대 Essentials

표준 시간대는 동일한 시간이 사용되는 지리적 영역입니다. 항상 그렇지는 않지만 일반적으로 인접한 표준 시간대는 1시간 간격입니다. 전세계 표준 시간대의 시간은 UTC(협정 세계시) 오프셋으로 표현할 수 있습니다.

전세계 표준 시간대는 대부분 일광 절약 시간을 지원합니다. 일광 절약 시간제는 봄이나 초기 여름에 시간을 한 시간 앞으로 이동하고 늦은 여름이나 가을에 일반(또는 표준) 시간으로 돌아와서 일광 시간을 극대화하려고 합니다. 표준 시간 간의 이러한 변경 내용은 조정 규칙으로 알려져 있습니다.

특정 표준 시간대의 일광 절약 시간 간의 전환은 고정 또는 부동 조정 규칙에서 정의될 수 있습니다. 고정 조정 규칙은 일광 절약 시간 간의 전환이 매년 발생하는 특정 날짜를 설정합니다. 예를 들어, 매년 10월 25일에 발생하는 일광 절약 시간에서 표준 시간으로의 전환은 고정 조정 규칙을 따릅니다. 보다 일반적인 규칙은 유동 조정 규칙으로, 일광 절약 시간 간의 전환에 대한 특정 월, 주, 날짜를 설정합니다. 예를 들어 3월의 세 번째 일요일에 발생하는 표준 시간에서 일광 절약 시간으로의 전환은 부동 조정 규칙을 따릅니다.

조정 규칙을 지원하는 표준 시간대의 경우 일광 절약 시간제 간의 전환으로 인해 잘못된 시간과 모호한 시간이라는 두 가지 예외적인 시간이 생성됩니다. 잘못된 시간은 표준 시간에서 일광 절약 시간으로의 전환에서 만든 존재하지 않는 시간입니다. 예를 들어 특정 일의 오전 2시에 표준 시간대 전환이 발생하고 시간이 오전 3시로 변경되면 오전 2시와 오전 2:59:59 사이의 각 시간 간격은 유효하지 않습니다. 모호한 시간은 단일 표준 시간대에서 두 개의 서로 다른 시간에 매핑될 수 있는 시간입니다. 일광 절약 시간에서 표준 시간으로의 전환에서 생성됩니다. 예를 들어 표준 시간대 전환이 특정 일의 오전 2시에 발생하고 시간이 오전 1시로 변경되면 오전 1시와 오전 1:59:59 사이의 각 시간 간격은 표준 시간이나 일광 절약 시간으로 해석될 수 있습니다.

표준 시간대 용어

다음 테이블에서는 표준 시간대를 사용하고 표준 시간대 인식 애플리케이션을 개발할 때 일반적으로 사용되는 용어를 정의합니다.

용어 정의
조정 규칙 표준 시간에서 일광 절약 시간으로의 전환 및 일광 절약 시간에서 표준 시간으로의 전환이 발생하는 시기를 정의하는 규칙입니다. 규칙 적용 시기(예: 조정 규칙은 1986년 1월 1일에서 2006년 12월 31일까지 적용됨), 델타(조정 규칙 애플리케이션의 결과로 표준 시간이 변경되는 시간의 양) 및 조정 기간 중에 발생하는 전환의 특정 날짜와 시간에 대한 정보를 정의하는 시작 및 종료 날짜가 각 조정 규칙에 포함됩니다. 전환은 고정 규칙 또는 유동 규칙을 따르면 됩니다.
모호한 시간 단일 표준 시간대에서 두 개의 서로 다른 시간에 매핑될 수 있는 시간입니다. 표준 시간대의 일광 절약 시간에서 표준 시간으로 전환하는 것과 같이 클록 시간을 뒤로 조정하는 경우 발생합니다. 예를 들어 표준 시간대 전환이 특정 일의 오전 2시에 발생하고 시간이 오전 1시로 변경되면 오전 1시와 오전 1:59:59 사이의 각 시간 간격은 표준 시간이나 일광 절약 시간으로 해석될 수 있습니다.
고정 규칙 조정 규칙은 일광 절약 시간 간의 전환에 대한 특정 날짜를 설정합니다. 예를 들어, 매년 10월 25일에 발생하는 일광 절약 시간에서 표준 시간으로의 전환은 고정 조정 규칙을 따릅니다.
유동 규칙 조정 규칙은 일광 절약 시간 간의 전환에 대한 특정 월, 주, 날짜를 설정합니다. 예를 들어 3월의 세 번째 일요일에 발생하는 표준 시간에서 일광 절약 시간으로의 전환은 부동 조정 규칙을 따릅니다.
잘못된 형식 표준 시간에서 일광 절약 시간으로의 전환 아티팩트인 존재하지 않는 시간입니다. 표준 시간대의 표준 시간에서 일광 절약 시간으로 전환하는 것과 같이 클록 시간을 앞으로 조정하는 경우 발생합니다. 예를 들어 특정 일의 오전 2시에 표준 시간대 전환이 발생하고 시간이 오전 3시로 변경되면 오전 2시와 오전 2:59:59 사이의 각 시간 간격은 유효하지 않습니다.
전환 시간 특정 표준 시간대에서 일광 절약 시간제를 표준 시간으로 변경하거나 그 반대의 경우와 같은 특정 시간 변경에 대한 정보입니다.

표준 시간대 및 TimeZoneInfo 클래스

.NET에서 TimeZoneInfo 개체는 표준 시간대를 나타냅니다. TimeZoneInfo 클래스에는 TimeZoneInfo.AdjustmentRule 개체 배열을 반환하는 GetAdjustmentRules 메서드가 포함됩니다. 이 배열의 각 요소는 특정 기간 동안 일광 절약 시간제로의 전환에 대한 정보를 제공합니다. (일광 절약 시간을 지원하지 않는 표준 시간대의 경우 메서드는 빈 배열을 반환합니다.) 각 TimeZoneInfo.AdjustmentRule 개체에는 일광 절약 시간제와 전환의 특정 날짜 및 시간을 정의하는 DaylightTransitionStartDaylightTransitionEnd 속성이 있습니다. 이 IsFixedDateRule 속성은 해당 전환이 고정되어 있는지 또는 부동인지를 나타냅니다.

.NET은 Windows 운영 체제에서 제공하고 레지스트리에 저장된 표준 시간대 정보를 사용합니다. 지구의 표준 시간대 수로 인해 모든 기존 표준 시간대가 레지스트리에 표시되지 않습니다. 또한 레지스트리는 동적 구조이므로 미리 정의된 표준 시간대를 추가하거나 제거할 수 있습니다. 마지막으로 레지스트리에 기록 표준 시간대 데이터가 반드시 포함되어 있지는 않습니다. 예를 들어 Windows XP에서 레지스트리에는 단일 표준 시간대 조정 집합에 대한 데이터만 포함됩니다. Windows Vista는 동적 표준 시간대 데이터를 지원합니다. 즉, 단일 표준 시간대에는 특정 연도 간격에 적용되는 여러 조정 규칙이 있을 수 있습니다. 그러나 Windows Vista 레지스트리에 정의되고 일광 절약 시간을 지원하는 대부분의 표준 시간대에는 미리 정의된 조정 규칙이 하나 또는 두 개뿐입니다.

레지스트리에 대한 TimeZoneInfo 클래스의 의존성은 표준 시간대 인식 애플리케이션이 특정 표준 시간대가 레지스트리에 정의되어 있는지 확신할 수 없음을 의미합니다. 결과적으로 현지 표준 시간대 또는 UTC를 나타내는 표준 시간대 이외의 특정 표준 시간대를 인스턴스화하려면 예외 처리를 사용해야 합니다. 또한 필수 TimeZoneInfo 개체를 인스턴스화할 수 없는 경우 애플리케이션을 계속 진행하는 메서드를 제공해야 합니다.

필요한 표준 시간대의 부재를 처리하기 위해 TimeZoneInfo 클래스에는 레지스트리에서 찾을 수 없는 사용자 지정 표준 시간대를 만드는 데 사용할 수 있는 CreateCustomTimeZone 메서드가 포함됩니다. 사용자 지정 시간대를 만드는 방법에 대한 자세한 내용은 방법: 조정 규칙을 사용하지 않고 표준 시간대 만들기 방법방법: 조정 규칙을 사용하여 표준 시간대 만들기를 참조하세요. 또한 이 ToSerializedString 메서드를 사용하여 새로 만든 표준 시간대를 문자열로 변환하고 데이터 저장소(예: 데이터베이스, 텍스트 파일, 레지스트리, 애플리케이션 리소스)에 저장할 수 있습니다. 그런 다음, FromSerializedString 메서드를 사용하여 이 문자열을 TimeZoneInfo 개체로 다시 변환할 수 있습니다. 자세한 내용은 방법: 포함된 리소스에 표준 시간대 저장방법: 포함된 리소스에 표준 시간대 복원을 참조하세요.

각 표준 시간대가 기존 조정 규칙을 반영하는 UTC의 오프셋뿐만 아니라 UTC의 기본 오프셋을 특징으로 하기 때문에 표준 시간대의 시간은 다른 표준 시간대의 시간으로 쉽게 변환될 수 있습니다. 이를 위해 TimeZoneInfo 개체는 다음을 비롯한 여러 가지 변환 메서드를 포함합니다.

  • ConvertTimeFromUtc, UTC를 지정된 표준 시간대의 시간으로 변환합니다.

  • ConvertTimeToUtc, 지정된 표준 시간대의 시간을 UTC로 변환합니다.

  • ConvertTime, 지정된 표준 시간대의 시간을 지정된 다른 표준 시간대의 시간으로 변환합니다.

  • ConvertTimeBySystemTimeZoneId, 지정된 표준 시간대의 시간을 지정된 다른 표준 시간대의 시간으로 변환하는 매개 변수로 표준 시간대 식별자(TimeZoneInfo 개체 대신)를 사용합니다.

표준 시간대 간의 시간 변환에 대한 세부 정보는 표준 시간대 간의 시간 변환을 참조하세요.

참고 항목