클라우드에서 실행되는 웹 응용프로그램에서 날짜-시간 값을 처리할 때, DateTime 보다는 DateTimeOffset 형식으로 자료를 처리하면 개인화된 시간 표시를 보다 편리하게 지원할 수 있습니다.
클라우드에서 실행되는 웹 응용프로그램은 웹 서버의 시간대에 의지할 수 없는 경우가 많습니다.
예를 들면, 한국 지역의 웹서버를 선택해서 웹 응용프로그램을 게시했지만, 웹 서버의 시간대를 조정할 수 없는 경우 자료는 UTC 시각으로 저장되고, 표시를 원하는 시간대로 표시할 수 있습니다.
DateTimeOffset 구조체는 UTC (Coordinated Universal Time)를 기준으로 한 날짜 및 시간으로 표시되는 특정 시점을 나타냅니다.
날짜와 시각을 표현하는 구조체입니다.
UTC를 기준으로 한 시간(Hour) 차이를 나타냅니다.
-14 ~ 14 사이의 값입니다.
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}}
클라우드에서 실행되는 웹 응용프로그램에서 날짜-시간 값을 처리할 때, DateTime 보다는 DateTimeOffset 형식으로 자료를 처리하면 개인화된 시간 표시를 보다 편리하게 지원할 수 있습니다.
클라우드에서 실행되는 웹 응용프로그램은 웹 서버의 시간대에 의지할 수 없는 경우가 많습니다.
예를 들면, 한국 지역의 웹서버를 선택해서 웹 응용프로그램을 게시했지만, 웹 서버의 시간대를 조정할 수 없는 경우 자료는 UTC 시각으로 저장되고, 표시를 원하는 시간대로 표시할 수 있습니다.
DateTimeOffset 구조체는 UTC (Coordinated Universal Time)를 기준으로 한 날짜 및 시간으로 표시되는 특정 시점을 나타냅니다.
날짜와 시각을 표현하는 구조체입니다.
UTC를 기준으로 한 시간(Hour) 차이를 나타냅니다.
-14 ~ 14 사이의 값입니다.
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}}