HomeCategoriesTags
 
 
 
 
 
 
 
 
 
 
 
 

원하는 시간대의 날짜와 시간을 표시하기 위한 DateTimeOffset

Categories:

  • Blog

클라우드에서 실행되는 웹 응용프로그램에서 날짜-시간 값을 처리할 때, DateTime 보다는 DateTimeOffset 형식으로 자료를 처리하면 개인화된 시간 표시를 보다 편리하게 지원할 수 있습니다.

클라우드에서 실행되는 웹 응용프로그램은 웹 서버의 시간대에 의지할 수 없는 경우가 많습니다.

예를 들면, 한국 지역의 웹서버를 선택해서 웹 응용프로그램을 게시했지만, 웹 서버의 시간대를 조정할 수 없는 경우 자료는 UTC 시각으로 저장되고, 표시를 원하는 시간대로 표시할 수 있습니다.

🔔 DateTimeOffset

DateTimeOffset 구조체는 UTC (Coordinated Universal Time)를 기준으로 한 날짜 및 시간으로 표시되는 특정 시점을 나타냅니다.

DateTime 속성

날짜와 시각을 표현하는 구조체입니다.

Offset 속성

UTC를 기준으로 한 시간(Hour) 차이를 나타냅니다.

-14 ~ 14 사이의 값입니다.

🔔 Timezone

TimeInfo 인스턴스를 얻기위해 사용되는 Id, StandardName의 목록입니다.

Id

Standard name

Offset

Dateline Standard Time

Dateline Standard Time

-12:00:00

UTC-11

UTC-11

-11:00:00

Aleutian Standard Time

Aleutian Standard Time

-10:00:00

Hawaiian Standard Time

Hawaiian Standard Time

-10:00:00

Marquesas Standard Time

Marquesas Standard Time

-09:30:00

Alaskan Standard Time

Alaskan Standard Time

-09:00:00

UTC-09

UTC-09

-09:00:00

Pacific Standard Time (Mexico)

Pacific Standard Time (Mexico)

-08:00:00

UTC-08

UTC-08

-08:00:00

Pacific Standard Time

Pacific Standard Time

-08:00:00

US Mountain Standard Time

US Mountain Standard Time

-07:00:00

Mountain Standard Time (Mexico)

Mountain Standard Time (Mexico)

-07:00:00

Mountain Standard Time

Mountain Standard Time

-07:00:00

Central America Standard Time

Central America Standard Time

-06:00:00

Central Standard Time

Central Standard Time

-06:00:00

Easter Island Standard Time

Easter Island Standard Time

-06:00:00

Central Standard Time (Mexico)

Central Standard Time (Mexico)

-06:00:00

Canada Central Standard Time

Canada Central Standard Time

-06:00:00

SA Pacific Standard Time

SA Pacific Standard Time

-05:00:00

Eastern Standard Time (Mexico)

Eastern Standard Time (Mexico)

-05:00:00

Eastern Standard Time

Eastern Standard Time

-05:00:00

Haiti Standard Time

Haiti Standard Time

-05:00:00

Cuba Standard Time

Cuba Standard Time

-05:00:00

US Eastern Standard Time

US Eastern Standard Time

-05:00:00

Turks And Caicos Standard Time

Turks and Caicos Standard Time

-05:00:00

Paraguay Standard Time

Paraguay Standard Time

-04:00:00

Atlantic Standard Time

Atlantic Standard Time

-04:00:00

Venezuela Standard Time

Venezuela Standard Time

-04:00:00

Central Brazilian Standard Time

Central Brazilian Standard Time

-04:00:00

SA Western Standard Time

SA Western Standard Time

-04:00:00

Pacific SA Standard Time

Pacific SA Standard Time

-04:00:00

Newfoundland Standard Time

Newfoundland Standard Time

-03:30:00

Tocantins Standard Time

Tocantins Standard Time

-03:00:00

E. South America Standard Time

E. South America Standard Time

-03:00:00

SA Eastern Standard Time

SA Eastern Standard Time

-03:00:00

Argentina Standard Time

Argentina Standard Time

-03:00:00

Greenland Standard Time

Greenland Standard Time

-03:00:00

Montevideo Standard Time

Montevideo Standard Time

-03:00:00

Magallanes Standard Time

Magallanes Standard Time

-03:00:00

Saint Pierre Standard Time

Saint Pierre Standard Time

-03:00:00

Bahia Standard Time

Bahia Standard Time

-03:00:00

UTC-02

UTC-02

-02:00:00

Mid-Atlantic Standard Time

Mid-Atlantic Standard Time

-02:00:00

Azores Standard Time

Azores Standard Time

-01:00:00

Cape Verde Standard Time

Cabo Verde Standard Time

-01:00:00

UTC

Coordinated Universal Time

00:00:00

Morocco Standard Time

Morocco Standard Time

00:00:00

GMT Standard Time

GMT Standard Time

00:00:00

Greenwich Standard Time

Greenwich Standard Time

00:00:00

W. Europe Standard Time

W. Europe Standard Time

01:00:00

Central Europe Standard Time

Central Europe Standard Time

01:00:00

Romance Standard Time

Romance Standard Time

01:00:00

Sao Tome Standard Time

Sao Tome Standard Time

01:00:00

Central European Standard Time

Central European Standard Time

01:00:00

W. Central Africa Standard Time

W. Central Africa Standard Time

01:00:00

Jordan Standard Time

Jordan Standard Time

02:00:00

GTB Standard Time

GTB Standard Time

02:00:00

Middle East Standard Time

Middle East Standard Time

02:00:00

Egypt Standard Time

Egypt Standard Time

02:00:00

E. Europe Standard Time

E. Europe Standard Time

02:00:00

Syria Standard Time

Syria Standard Time

02:00:00

West Bank Standard Time

West Bank Gaza Standard Time

02:00:00

South Africa Standard Time

South Africa Standard Time

02:00:00

FLE Standard Time

FLE Standard Time

02:00:00

Israel Standard Time

Jerusalem Standard Time

02:00:00

Kaliningrad Standard Time

Russia TZ 1 Standard Time

02:00:00

Sudan Standard Time

Sudan Standard Time

02:00:00

Libya Standard Time

Libya Standard Time

02:00:00

Namibia Standard Time

Namibia Standard Time

02:00:00

Arabic Standard Time

Arabic Standard Time

03:00:00

Turkey Standard Time

Turkey Standard Time

03:00:00

Arab Standard Time

Arab Standard Time

03:00:00

Belarus Standard Time

Belarus Standard Time

03:00:00

Russian Standard Time

Russia TZ 2 Standard Time

03:00:00

E. Africa Standard Time

E. Africa Standard Time

03:00:00

Iran Standard Time

Iran Standard Time

03:30:00

Arabian Standard Time

Arabian Standard Time

04:00:00

Astrakhan Standard Time

Astrakhan Standard Time

04:00:00

Azerbaijan Standard Time

Azerbaijan Standard Time

04:00:00

Russia Time Zone 3

Russia TZ 3 Standard Time

04:00:00

Mauritius Standard Time

Mauritius Standard Time

04:00:00

Saratov Standard Time

Saratov Standard Time

04:00:00

Georgian Standard Time

Georgian Standard Time

04:00:00

Caucasus Standard Time

Caucasus Standard Time

04:00:00

Afghanistan Standard Time

Afghanistan Standard Time

04:30:00

West Asia Standard Time

West Asia Standard Time

05:00:00

Ekaterinburg Standard Time

Russia TZ 4 Standard Time

05:00:00

Pakistan Standard Time

Pakistan Standard Time

05:00:00

India Standard Time

India Standard Time

05:30:00

Sri Lanka Standard Time

Sri Lanka Standard Time

05:30:00

Nepal Standard Time

Nepal Standard Time

05:45:00

Central Asia Standard Time

Central Asia Standard Time

06:00:00

Bangladesh Standard Time

Bangladesh Standard Time

06:00:00

Omsk Standard Time

Omsk Standard Time

06:00:00

Myanmar Standard Time

Myanmar Standard Time

06:30:00

SE Asia Standard Time

SE Asia Standard Time

07:00:00

Altai Standard Time

Altai Standard Time

07:00:00

W. Mongolia Standard Time

W. Mongolia Standard Time

07:00:00

North Asia Standard Time

Russia TZ 6 Standard Time

07:00:00

N. Central Asia Standard Time

Novosibirsk Standard Time

07:00:00

Tomsk Standard Time

Tomsk Standard Time

07:00:00

China Standard Time

China Standard Time

08:00:00

North Asia East Standard Time

Russia TZ 7 Standard Time

08:00:00

Singapore Standard Time

Malay Peninsula Standard Time

08:00:00

W. Australia Standard Time

W. Australia Standard Time

08:00:00

Taipei Standard Time

Taipei Standard Time

08:00:00

Ulaanbaatar Standard Time

Ulaanbaatar Standard Time

08:00:00

North Korea Standard Time

North Korea Standard Time

08:30:00

Aus Central W. Standard Time

Aus Central W. Standard Time

08:45:00

Transbaikal Standard Time

Transbaikal Standard Time

09:00:00

Tokyo Standard Time

Tokyo Standard Time

09:00:00

Korea Standard Time

Korea Standard Time

09:00:00

Yakutsk Standard Time

Russia TZ 8 Standard Time

09:00:00

Cen. Australia Standard Time

Cen. Australia Standard Time

09:30:00

AUS Central Standard Time

AUS Central Standard Time

09:30:00

E. Australia Standard Time

E. Australia Standard Time

10:00:00

AUS Eastern Standard Time

AUS Eastern Standard Time

10:00:00

West Pacific Standard Time

West Pacific Standard Time

10:00:00

Tasmania Standard Time

Tasmania Standard Time

10:00:00

Vladivostok Standard Time

Russia TZ 9 Standard Time

10:00:00

Lord Howe Standard Time

Lord Howe Standard Time

10:30:00

Bougainville Standard Time

Bougainville Standard Time

11:00:00

Russia Time Zone 10

Russia TZ 10 Standard Time

11:00:00

Magadan Standard Time

Magadan Standard Time

11:00:00

Norfolk Standard Time

Norfolk Standard Time

11:00:00

Sakhalin Standard Time

Sakhalin Standard Time

11:00:00

Central Pacific Standard Time

Central Pacific Standard Time

11:00:00

Russia Time Zone 11

Russia TZ 11 Standard Time

12:00:00

New Zealand Standard Time

New Zealand Standard Time

12:00:00

UTC+12

UTC+12

12:00:00

Fiji Standard Time

Fiji Standard Time

12:00:00

Kamchatka Standard Time

Kamchatka Standard Time

12:00:00

Chatham Islands Standard Time

Chatham Islands Standard Time

12:45:00

UTC+13

UTC+13

13:00:00

Tonga Standard Time

Tonga Standard Time

13:00:00

Samoa Standard Time

Samoa Standard Time

13:00:00

Line Islands Standard Time

Line Islands Standard Time

14:00:00

Console.WriteLine($"| Id | Standard name | Offset |");
Console.WriteLine($"| :- | :- | :- |");
foreach (var timezone in TimeZoneInfo.GetSystemTimeZones().OrderBy(z=>z.BaseUtcOffset))
{
    Console.WriteLine($"| {timezone.Id} | {timezone.StandardName} | {timezone.BaseUtcOffset} |");
}

🔔 시간대 변경

TimeZoneInfo 클래스를 사용해서 간편하게 원하는 시간대의 시각으로 변경할 수 있습니다.

public static class DateTimeOffsetExtensions
{
    /// <summary>
    /// 지정된 시간대에 해당하는 시각을 계산합니다.
    /// </summary>
    /// <param name="dateTimeOffset"></param>
    /// <param name="timeZoneId">시간대 식별자</param>
    /// <returns></returns>
    public static DateTimeOffset ToLocalDateTime(this DateTimeOffset dateTimeOffset, string timeZoneId)
    {
        var timeZoneInfo = TimeZoneInfo.GetSystemTimeZones()
            .Where(t => t.Id.Equals(timeZoneId, StringComparison.OrdinalIgnoreCase))
            .FirstOrDefault();

        var localTime = TimeZoneInfo.ConvertTime(dateTimeOffset, timeZoneInfo);

        return localTime;
    }
}

👁‍🗨 코드

Github 에서 간략한 예제를 확인할 수 있습니다.

[sc name="github" user="bbonkr" repo="dotnet-timezoneinfo"] {{CODE_GITHUB_BUTTON_SCRIPT}}


Tags

  • .NET
  • aws
  • azure
  • C#
  • cloud
  • csharp
  • datetime
  • datetimeoffset
  • github
  • github repository

클라우드에서 실행되는 웹 응용프로그램에서 날짜-시간 값을 처리할 때, DateTime 보다는 DateTimeOffset 형식으로 자료를 처리하면 개인화된 시간 표시를 보다 편리하게 지원할 수 있습니다.

클라우드에서 실행되는 웹 응용프로그램은 웹 서버의 시간대에 의지할 수 없는 경우가 많습니다.

예를 들면, 한국 지역의 웹서버를 선택해서 웹 응용프로그램을 게시했지만, 웹 서버의 시간대를 조정할 수 없는 경우 자료는 UTC 시각으로 저장되고, 표시를 원하는 시간대로 표시할 수 있습니다.

🔔 DateTimeOffset

DateTimeOffset 구조체는 UTC (Coordinated Universal Time)를 기준으로 한 날짜 및 시간으로 표시되는 특정 시점을 나타냅니다.

DateTime 속성

날짜와 시각을 표현하는 구조체입니다.

Offset 속성

UTC를 기준으로 한 시간(Hour) 차이를 나타냅니다.

-14 ~ 14 사이의 값입니다.

🔔 Timezone

TimeInfo 인스턴스를 얻기위해 사용되는 Id, StandardName의 목록입니다.

Id

Standard name

Offset

Dateline Standard Time

Dateline Standard Time

-12:00:00

UTC-11

UTC-11

-11:00:00

Aleutian Standard Time

Aleutian Standard Time

-10:00:00

Hawaiian Standard Time

Hawaiian Standard Time

-10:00:00

Marquesas Standard Time

Marquesas Standard Time

-09:30:00

Alaskan Standard Time

Alaskan Standard Time

-09:00:00

UTC-09

UTC-09

-09:00:00

Pacific Standard Time (Mexico)

Pacific Standard Time (Mexico)

-08:00:00

UTC-08

UTC-08

-08:00:00

Pacific Standard Time

Pacific Standard Time

-08:00:00

US Mountain Standard Time

US Mountain Standard Time

-07:00:00

Mountain Standard Time (Mexico)

Mountain Standard Time (Mexico)

-07:00:00

Mountain Standard Time

Mountain Standard Time

-07:00:00

Central America Standard Time

Central America Standard Time

-06:00:00

Central Standard Time

Central Standard Time

-06:00:00

Easter Island Standard Time

Easter Island Standard Time

-06:00:00

Central Standard Time (Mexico)

Central Standard Time (Mexico)

-06:00:00

Canada Central Standard Time

Canada Central Standard Time

-06:00:00

SA Pacific Standard Time

SA Pacific Standard Time

-05:00:00

Eastern Standard Time (Mexico)

Eastern Standard Time (Mexico)

-05:00:00

Eastern Standard Time

Eastern Standard Time

-05:00:00

Haiti Standard Time

Haiti Standard Time

-05:00:00

Cuba Standard Time

Cuba Standard Time

-05:00:00

US Eastern Standard Time

US Eastern Standard Time

-05:00:00

Turks And Caicos Standard Time

Turks and Caicos Standard Time

-05:00:00

Paraguay Standard Time

Paraguay Standard Time

-04:00:00

Atlantic Standard Time

Atlantic Standard Time

-04:00:00

Venezuela Standard Time

Venezuela Standard Time

-04:00:00

Central Brazilian Standard Time

Central Brazilian Standard Time

-04:00:00

SA Western Standard Time

SA Western Standard Time

-04:00:00

Pacific SA Standard Time

Pacific SA Standard Time

-04:00:00

Newfoundland Standard Time

Newfoundland Standard Time

-03:30:00

Tocantins Standard Time

Tocantins Standard Time

-03:00:00

E. South America Standard Time

E. South America Standard Time

-03:00:00

SA Eastern Standard Time

SA Eastern Standard Time

-03:00:00

Argentina Standard Time

Argentina Standard Time

-03:00:00

Greenland Standard Time

Greenland Standard Time

-03:00:00

Montevideo Standard Time

Montevideo Standard Time

-03:00:00

Magallanes Standard Time

Magallanes Standard Time

-03:00:00

Saint Pierre Standard Time

Saint Pierre Standard Time

-03:00:00

Bahia Standard Time

Bahia Standard Time

-03:00:00

UTC-02

UTC-02

-02:00:00

Mid-Atlantic Standard Time

Mid-Atlantic Standard Time

-02:00:00

Azores Standard Time

Azores Standard Time

-01:00:00

Cape Verde Standard Time

Cabo Verde Standard Time

-01:00:00

UTC

Coordinated Universal Time

00:00:00

Morocco Standard Time

Morocco Standard Time

00:00:00

GMT Standard Time

GMT Standard Time

00:00:00

Greenwich Standard Time

Greenwich Standard Time

00:00:00

W. Europe Standard Time

W. Europe Standard Time

01:00:00

Central Europe Standard Time

Central Europe Standard Time

01:00:00

Romance Standard Time

Romance Standard Time

01:00:00

Sao Tome Standard Time

Sao Tome Standard Time

01:00:00

Central European Standard Time

Central European Standard Time

01:00:00

W. Central Africa Standard Time

W. Central Africa Standard Time

01:00:00

Jordan Standard Time

Jordan Standard Time

02:00:00

GTB Standard Time

GTB Standard Time

02:00:00

Middle East Standard Time

Middle East Standard Time

02:00:00

Egypt Standard Time

Egypt Standard Time

02:00:00

E. Europe Standard Time

E. Europe Standard Time

02:00:00

Syria Standard Time

Syria Standard Time

02:00:00

West Bank Standard Time

West Bank Gaza Standard Time

02:00:00

South Africa Standard Time

South Africa Standard Time

02:00:00

FLE Standard Time

FLE Standard Time

02:00:00

Israel Standard Time

Jerusalem Standard Time

02:00:00

Kaliningrad Standard Time

Russia TZ 1 Standard Time

02:00:00

Sudan Standard Time

Sudan Standard Time

02:00:00

Libya Standard Time

Libya Standard Time

02:00:00

Namibia Standard Time

Namibia Standard Time

02:00:00

Arabic Standard Time

Arabic Standard Time

03:00:00

Turkey Standard Time

Turkey Standard Time

03:00:00

Arab Standard Time

Arab Standard Time

03:00:00

Belarus Standard Time

Belarus Standard Time

03:00:00

Russian Standard Time

Russia TZ 2 Standard Time

03:00:00

E. Africa Standard Time

E. Africa Standard Time

03:00:00

Iran Standard Time

Iran Standard Time

03:30:00

Arabian Standard Time

Arabian Standard Time

04:00:00

Astrakhan Standard Time

Astrakhan Standard Time

04:00:00

Azerbaijan Standard Time

Azerbaijan Standard Time

04:00:00

Russia Time Zone 3

Russia TZ 3 Standard Time

04:00:00

Mauritius Standard Time

Mauritius Standard Time

04:00:00

Saratov Standard Time

Saratov Standard Time

04:00:00

Georgian Standard Time

Georgian Standard Time

04:00:00

Caucasus Standard Time

Caucasus Standard Time

04:00:00

Afghanistan Standard Time

Afghanistan Standard Time

04:30:00

West Asia Standard Time

West Asia Standard Time

05:00:00

Ekaterinburg Standard Time

Russia TZ 4 Standard Time

05:00:00

Pakistan Standard Time

Pakistan Standard Time

05:00:00

India Standard Time

India Standard Time

05:30:00

Sri Lanka Standard Time

Sri Lanka Standard Time

05:30:00

Nepal Standard Time

Nepal Standard Time

05:45:00

Central Asia Standard Time

Central Asia Standard Time

06:00:00

Bangladesh Standard Time

Bangladesh Standard Time

06:00:00

Omsk Standard Time

Omsk Standard Time

06:00:00

Myanmar Standard Time

Myanmar Standard Time

06:30:00

SE Asia Standard Time

SE Asia Standard Time

07:00:00

Altai Standard Time

Altai Standard Time

07:00:00

W. Mongolia Standard Time

W. Mongolia Standard Time

07:00:00

North Asia Standard Time

Russia TZ 6 Standard Time

07:00:00

N. Central Asia Standard Time

Novosibirsk Standard Time

07:00:00

Tomsk Standard Time

Tomsk Standard Time

07:00:00

China Standard Time

China Standard Time

08:00:00

North Asia East Standard Time

Russia TZ 7 Standard Time

08:00:00

Singapore Standard Time

Malay Peninsula Standard Time

08:00:00

W. Australia Standard Time

W. Australia Standard Time

08:00:00

Taipei Standard Time

Taipei Standard Time

08:00:00

Ulaanbaatar Standard Time

Ulaanbaatar Standard Time

08:00:00

North Korea Standard Time

North Korea Standard Time

08:30:00

Aus Central W. Standard Time

Aus Central W. Standard Time

08:45:00

Transbaikal Standard Time

Transbaikal Standard Time

09:00:00

Tokyo Standard Time

Tokyo Standard Time

09:00:00

Korea Standard Time

Korea Standard Time

09:00:00

Yakutsk Standard Time

Russia TZ 8 Standard Time

09:00:00

Cen. Australia Standard Time

Cen. Australia Standard Time

09:30:00

AUS Central Standard Time

AUS Central Standard Time

09:30:00

E. Australia Standard Time

E. Australia Standard Time

10:00:00

AUS Eastern Standard Time

AUS Eastern Standard Time

10:00:00

West Pacific Standard Time

West Pacific Standard Time

10:00:00

Tasmania Standard Time

Tasmania Standard Time

10:00:00

Vladivostok Standard Time

Russia TZ 9 Standard Time

10:00:00

Lord Howe Standard Time

Lord Howe Standard Time

10:30:00

Bougainville Standard Time

Bougainville Standard Time

11:00:00

Russia Time Zone 10

Russia TZ 10 Standard Time

11:00:00

Magadan Standard Time

Magadan Standard Time

11:00:00

Norfolk Standard Time

Norfolk Standard Time

11:00:00

Sakhalin Standard Time

Sakhalin Standard Time

11:00:00

Central Pacific Standard Time

Central Pacific Standard Time

11:00:00

Russia Time Zone 11

Russia TZ 11 Standard Time

12:00:00

New Zealand Standard Time

New Zealand Standard Time

12:00:00

UTC+12

UTC+12

12:00:00

Fiji Standard Time

Fiji Standard Time

12:00:00

Kamchatka Standard Time

Kamchatka Standard Time

12:00:00

Chatham Islands Standard Time

Chatham Islands Standard Time

12:45:00

UTC+13

UTC+13

13:00:00

Tonga Standard Time

Tonga Standard Time

13:00:00

Samoa Standard Time

Samoa Standard Time

13:00:00

Line Islands Standard Time

Line Islands Standard Time

14:00:00

Console.WriteLine($"| Id | Standard name | Offset |");
Console.WriteLine($"| :- | :- | :- |");
foreach (var timezone in TimeZoneInfo.GetSystemTimeZones().OrderBy(z=>z.BaseUtcOffset))
{
    Console.WriteLine($"| {timezone.Id} | {timezone.StandardName} | {timezone.BaseUtcOffset} |");
}

🔔 시간대 변경

TimeZoneInfo 클래스를 사용해서 간편하게 원하는 시간대의 시각으로 변경할 수 있습니다.

public static class DateTimeOffsetExtensions
{
    /// <summary>
    /// 지정된 시간대에 해당하는 시각을 계산합니다.
    /// </summary>
    /// <param name="dateTimeOffset"></param>
    /// <param name="timeZoneId">시간대 식별자</param>
    /// <returns></returns>
    public static DateTimeOffset ToLocalDateTime(this DateTimeOffset dateTimeOffset, string timeZoneId)
    {
        var timeZoneInfo = TimeZoneInfo.GetSystemTimeZones()
            .Where(t => t.Id.Equals(timeZoneId, StringComparison.OrdinalIgnoreCase))
            .FirstOrDefault();

        var localTime = TimeZoneInfo.ConvertTime(dateTimeOffset, timeZoneInfo);

        return localTime;
    }
}

👁‍🗨 코드

Github 에서 간략한 예제를 확인할 수 있습니다.

[sc name="github" user="bbonkr" repo="dotnet-timezoneinfo"] {{CODE_GITHUB_BUTTON_SCRIPT}}