다음을 통해 공유


날짜, 시간 및 표준 시간대

.NET은 날짜, 시간 및 표준 시간대를 나타내는 형식을 제공합니다. 이 문서에서는 이러한 형식에 대해 설명합니다.

.NET은 기본 DateTime 구조 외에도 표준 시간대 작업을 지원하는 다음 클래스를 제공합니다.

  • TimeZoneInfo

    이 클래스를 사용하여 시스템에 미리 정의된 모든 표준 시간대로 작업하고, 새 표준 시간대를 만들고, 날짜와 시간을 한 표준 시간대에서 다른 표준 시간대로 쉽게 변환할 수 있습니다. 새 개발의 경우 TimeZoneInfo 클래스 대신 TimeZone 클래스를 사용합니다.

  • DateTimeOffset

    UTC의 오프셋(또는 차이)이 알려진 날짜 및 시간을 사용하려면 이 구조를 사용합니다. DateTimeOffset 구조체는 날짜 및 시간 값을 UTC의 해당 시간 오프셋과 결합합니다. UTC와의 관계 때문에 개별 날짜 및 시간 값은 단일 시점을 명확하게 식별합니다. 이렇게 하면 DateTimeOffset 값이 DateTime 값보다 한 컴퓨터에서 다른 컴퓨터로 이식할 수 있습니다.

시간 작업을 지원하는 클래스는 다음과 같습니다.

  • TimeSpan

    경과된 시간 또는 두 날짜 간의 차이와 같은 시간 간격을 나타내려면 이 구조를 사용합니다.

  • TimeOnly

    날짜가 없는 시간을 나타내려면 이 구조를 사용합니다. 시간은 특정이 아닌 일의 시간, 분 및 초를 나타냅니다. TimeOnly은(는) 00:00:00.0000000에서 23:59:59.9999999까지의 범위를 가집니다. 이 형식은 해당 형식을 사용하여 시간을 나타낼 때 코드의 DateTimeTimeSpan 형식을 바꾸는 데 사용할 수 있습니다. 자세한 내용은 DateOnly 및 TimeOnly 구조사용하는 방법을 참조하세요.

    중요하다

    TimeOnly .NET Framework에 사용할 수 없습니다.

  • TimeProvider

    시간 추상화 기능을 제공하는 기본 클래스입니다. 현재 시간을 확인하는 일반적인 방법은 DateTime.UtcNow 또는 DateTimeOffset.UtcNow사용하는 것입니다. 그러나 이러한 형식은 "지금"으로 간주되는 항목에 대한 제어를 제공하지 않습니다. 왜 그것을 통제하고 싶습니까? 테스트 용이성. 예를 들어 이벤트 1일 전에 미리 알림을 제공하는 이벤트 추적 애플리케이션을 작성하는 것이 좋습니다. 앱의 논리는 매시간 이벤트 시간을 확인하고 이벤트 24시간 전에 사용자에게 경고하는 것입니다. 앱에 대한 테스트를 작성할 때, 이 논리를 테스트하기 위해 자체적으로 DateTimeOffset.UtcNow을 래핑하는 형식을 제공해야 하지만 이제는 .NET에서 이 추상화 클래스를 제공합니다.

    자세한 내용은 What is TimeProvider를 참조하세요.

    TimeProvider 형식은 .NET에 포함됩니다.

    .NET Framework 및 .NET Standard의 경우 TimeProviderMicrosoft.Bcl.TimeProvider NuGet 패키지에 의해 제공됩니다.

날짜 작업을 지원하는 다음 클래스는 다음과 같습니다.

  • DateOnly

    날짜만 나타내는 값으로 작업할 때 이 구조를 사용합니다. 날짜는 하루의 시작부터 끝까지의 전체 일을 나타냅니다. DateOnly0001-01-01에서 9999-12-31까지의 범위가 있습니다. 또한 이 형식은 특정 시간 없이 월, 일 및 연도 조합을 나타냅니다. 이전에 코드에서 DateTime 형식을 사용하여 시간을 무시한 날짜를 나타내는 경우 해당 위치에서 이 형식을 사용합니다. 자세한 내용은 DateOnly 및 TimeOnly 구조사용하는 방법을 참조하세요.

    중요하다

    DateOnly .NET Framework에 사용할 수 없습니다.

다음 섹션에서는 표준 시간대를 사용하고 날짜와 시간을 표준 시간대에서 다른 표준 시간대로 변환할 수 있는 표준 시간대 인식 애플리케이션을 만드는 데 필요한 정보를 제공합니다.

이 섹션에서는

표준 시간대 개요
표준 시간대 인식 애플리케이션을 만드는 데 관련된 용어, 개념 및 문제에 대해 설명합니다.

DateTime, DateTimeOffset, TimeSpan 및 TimeZoneInfo 중에서 선택
날짜 및 시간 데이터로 작업할 때 DateTime, DateTimeOffsetTimeZoneInfo 형식을 사용하는 경우에 대해 설명합니다.

로컬 시스템에서 정의된 표준 시간대 찾기
로컬 시스템에 있는 표준 시간대를 열거하는 방법을 설명합니다.

사용법 안내: 컴퓨터에 존재하는 표준 시간대 열거
컴퓨터 레지스트리에 정의된 표준 시간대를 열거하고 사용자가 목록에서 미리 정의된 표준 시간대를 선택할 수 있도록 하는 예제를 제공합니다.

방법: 미리 정의된 UTC 및 현지 표준 시간대 개체에 액세스
협정 세계시 및 현지 표준 시간대에 액세스하는 방법을 설명합니다.

TimeZoneInfo 개체 인스턴스화하는 방법
로컬 시스템 레지스트리에서 TimeZoneInfo 개체를 인스턴스화하는 방법을 설명합니다.

DateTimeOffset 개체 인스턴스화
DateTimeOffset 개체를 인스턴스화하는 방법과 DateTime 값을 DateTimeOffset 값으로 변환할 수 있는 방법에 대해 설명합니다.

방법: 조정 규칙 없이 표준 시간대 만들기
일광 절약 시간제로의 전환을 지원하지 않는 사용자 지정 표준 시간대를 만드는 방법을 설명합니다.

방법: 조정 규칙을 사용하여 표준 시간대 만들기
사용자 정의 시간대를 생성하여 일광 절약 시간제로의 전환과 그로부터의 전환을 지원하는 방법을 설명합니다.

시간대 저장 및 복원
표준 시간대 데이터의 직렬화 및 역직렬화에 대한 TimeZoneInfo 지원에 대해 설명하고 이러한 기능을 사용할 수 있는 몇 가지 시나리오를 보여 줍니다.

방법: 포함된 리소스에 표준 시간대 저장하는 방법
사용자 지정 표준 시간대를 만들고 해당 정보를 리소스 파일에 저장하는 방법을 설명합니다.

방법: 포함된 리소스에서 표준 시간대를 복원하는 방법
포함된 리소스 파일에 저장된 사용자 지정 표준 시간대를 인스턴스화하는 방법을 설명합니다.

날짜 및 시간 사용하여 산술 연산 수행
DateTimeDateTimeOffset 값 추가, 빼기 및 비교와 관련된 문제에 대해 설명합니다.

방법: 날짜 및 시간 계산에서 표준 시간대를 사용하는 방법
표준 시간대의 조정 규칙을 반영하는 날짜 및 시간 산술 연산을 수행하는 방법에 대해 설명합니다.

DateTime과 DateTimeOffset 간의 변환
DateTime 값과 DateTimeOffset 값 간에 변환하는 방법을 설명합니다.

시간대 사이 시간 변환
시간을 한 시간대에서 다른 시간대로 변환하는 방법을 설명합니다.

모호한 시간을 해결하는 방법
표준 시간대로 매핑하여 모호한 시간을 해결하는 방법을 설명합니다.

방법: 사용자가 모호한 시간을 해결하도록 허용하기
사용자가 모호한 현지 시간과 협정 세계시 사이의 매핑을 결정할 수 있도록 하는 방법을 설명합니다.

참조

System.TimeZoneInfo