주요 콘텐츠

표준 시간대 지정하기

MATLAB®에서 datetime 배열의 표준 시간대를 지정할 수 있습니다. 이 예제에서는 표준 시간대를 포함하는 datetime형 배열을 만들고 사용하는 방법을 보여줍니다.

표준 시간대는 일정한 표준 시간이 적용되는 지리적 지역입니다. 표준 시간대에는 협정 세계시(UTC)와의 시간 오프셋, 일광 절약 시간제(DST)와의 시간 오프셋, 그리고 이들 오프셋에 대한 과거 변경값들이 포함됩니다. datetime 데이터형은 표준 시간대를 설정하고 표준 시간대 오프셋을 계산하기 위해 IANA(인터넷 할당 번호 관리 기관)에서 제공하는 IANA Time Zone Database의 코드와 데이터를 사용합니다.

표준 시간대 테이블을 표시하고 검색하기

MATLAB이 인식하는 표준 시간대 테이블 전체를 보려면 timezones 함수를 사용하십시오. 테이블의 각 행은 표준 시간대 이름, 지리적 지역, UTC로부터의 오프셋, DST로 인한 오프셋을 표시합니다. DST가 시행되는 표준 시간대의 경우, 이 표준 시간대에 적용된 현재와 과거의 규칙에 따라 DST 오프셋이 적용됩니다.

AllTimeZones = timezones
AllTimeZones=445×4 table
             Name              Area     UTCOffset    DSTOffset
    ______________________    ______    _________    _________

    {'Africa/Abidjan'    }    Africa        0            0    
    {'Africa/Accra'      }    Africa        0            0    
    {'Africa/Addis_Ababa'}    Africa        3            0    
    {'Africa/Algiers'    }    Africa        1            0    
    {'Africa/Asmera'     }    Africa        3            0    
    {'Africa/Bamako'     }    Africa        0            0    
    {'Africa/Bangui'     }    Africa        1            0    
    {'Africa/Banjul'     }    Africa        0            0    
    {'Africa/Bissau'     }    Africa        0            0    
    {'Africa/Blantyre'   }    Africa        2            0    
    {'Africa/Brazzaville'}    Africa        1            0    
    {'Africa/Bujumbura'  }    Africa        2            0    
    {'Africa/Cairo'      }    Africa        2            1    
    {'Africa/Casablanca' }    Africa        0            1    
    {'Africa/Ceuta'      }    Africa        1            1    
    {'Africa/Conakry'    }    Africa        0            0    
      ⋮

MATLAB이 사용하는 IANA Time Zone Database의 버전을 보려면 timezones의 두 번째 출력값을 반환합니다.

[~,DBversion] = timezones
DBversion = 
'2024b'

표준 시간대의 이름을 확인하려면 표준 시간대 테이블의 Name 변수를 검색하면 됩니다. 이름의 일부만 아는 경우 전체 이름을 확인하려면 contains 함수를 사용하면 됩니다. 예를 들어, 뉴욕에 해당되는 표준 시간대의 이름을 찾습니다. 검색 문자열에서 공백 문자를 밑줄로 바꾸십시오.

TFindex = contains(AllTimeZones.Name,"New_York");
NewYorkZone = AllTimeZones.Name(TFindex)
NewYorkZone = 1×1 cell array
    {'America/New_York'}

표준 시간대 테이블의 해당하는 행을 표시합니다. 표준 시간대의 정확한 이름을 매칭하려면 matches 함수를 사용하십시오.

TFindex = matches(AllTimeZones.Name,NewYorkZone);
AllTimeZones(TFindex,:)
ans=1×4 table
            Name             Area      UTCOffset    DSTOffset
    ____________________    _______    _________    _________

    {'America/New_York'}    America       -5            1    

표준 시간대를 갖는 datetime 값 만들기

datetime 배열은 표준 시간대 속성을 가집니다. 기본적으로 이 속성은 설정되어 있지 않습니다. 즉, 결과로 생성되는 datetime 배열은 표준 시간대가 지정되어 있지 않습니다. 다른 표준 시간대의 DST 시간이나 현지 시간을 고려할 필요 없이 현지 시간을 계산할 때는 표준 시간대가 적용되지 않은 datetime 배열을 사용할 수 있습니다.

예를 들어, 현재 시간에 대한 datetime형 값을 만들고 TimeZone 속성을 표시합니다. 현재 날짜와 시간의 값은 시스템 시계에서 가져옵니다. 표준 시간대가 없으면 datetime 값은 UTC와의 상대적인 표준 시간대 오프셋을 계산할 수 없습니다.

D = datetime("now")
D = datetime
   13-Jul-2025 17:47:12

D.TimeZone
ans =

  0×0 empty char array

datetime 배열의 표준 시간대를 설정하는 방법에는 두 가지가 있습니다. 첫 번째 방법은 datetime 배열을 만들 때 datetime 함수의 TimeZone 이름-값 인수를 지정하는 것입니다. 이 인수를 지정하면 TimeZone 속성의 값이 설정됩니다.

D = datetime("now",TimeZone="America/New_York")
D = datetime
   13-Jul-2025 17:47:13

D.TimeZone
ans = 
'America/New_York'

두 번째 방법은 datetime 배열을 만든 후에 TimeZone 속성에 값을 할당하는 것입니다.

D = datetime("now")
D = datetime
   13-Jul-2025 17:47:13

D.TimeZone = "America/New_York"
D = datetime
   13-Jul-2025 17:47:13

UTC로부터 고정된 표준 시간대 오프셋을 나타내는 지속 시간을 사용하여 TimeZone 속성을 지정할 수도 있습니다. 이러한 오프셋은 일광 절약 시간제와 같은 현재 또는 과거의 오프셋 규칙을 반영하지 않습니다.

예를 들어, 표준 시간대 오프셋을 UTC보다 5시간 이후로 지정합니다. 이 오프셋은 America/New_York에 대한 UTC 오프셋과 동일하나, 일광 절약 시간제에 대한 오프셋은 포함하지 않습니다.

D = datetime("now",TimeZone="-05:00")
D = datetime
   13-Jul-2025 16:47:13

D.TimeZone
ans = 
'-05:00'

TimeZone을 다음 목록에 있는 값 중 하나로 지정할 수 있습니다.

  • "" — 표준 시간대 없음

  • 표준 시간대 이름 — IANA Time Zone Database의 표준 시간대

  • +HH:mm 또는 -HH:mm 형식의 표준 시간대 오프셋 — UTC로부터 고정된 오프셋

  • duration형 스칼라인 표준 시간대 오프셋(R2024a부터) — UTC로부터 고정된 오프셋으로, hours, minutes, seconds 또는 duration 함수를 사용하여 지정됨

  • "UTC" — 협정 세계시

  • "UTCLeapSeconds" — 협정 세계시(윤초 포함)

  • "local" — 시스템 표준 시간대에 대응되는 IANA 표준 시간대

표준 시간대 오프셋을 포함하는 형식 지정하기

datetime 배열의 디폴트 형식은 표준 시간대를 포함하지 않습니다. 그러나 z 또는 Z 식별자를 사용하여 형식에 표준 시간대 오프셋을 포함할 수 있습니다.

예를 들어, z를 사용하여 날짜, 시간 및 표준 시간대 오프셋을 포함하도록 형식을 변경합니다. z 식별자는 짧은 형식의 현지화된 오프셋을 지정합니다. 동작은 로캘에 따라 달라집니다.

D = datetime("now", ...
             TimeZone="America/New_York", ...
             Format="dd-MMM-uuuu HH:mm:ss z")
D = datetime
   13-Jul-2025 17:47:13 EDT

Z 식별자는 오프셋을 시간, 분, 초(선택 사항)로 표시하는 기본적인 형식을 지정합니다.

D.Format = "dd-MMM-uuuu HH:mm:ss Z"
D = datetime
   13-Jul-2025 17:47:13 -0400

긴 UTC 형식을 지정할 수도 있습니다. 표준 시간대 오프셋 식별자의 전체 목록을 보려면 datetime 항목을 참조하십시오.

D.Format = "dd-MMM-uuuu HH:mm:ss ZZZZ"
D = datetime
   13-Jul-2025 17:47:13 UTC-04:00

달라진 표준 시간대에서 동일한 시간을 나타내도록 조정하기

datetime 값의 표준 시간대를 변경하더라도 여전히 동일한 시점을 나타내도록 조정됩니다. UTC로부터의 오프셋이 변경되면 오프셋에서의 변화를 보상하도록 날짜와 시간 값이 변경됩니다.

예를 들어, 뉴욕 표준 시간대의 datetime형 값을 만들고, 표준 시간대 오프셋을 표시하도록 형식을 지정합니다.

D = datetime("today", ...
             TimeZone="America/New_York", ...
             Format="dd-MMM-uuuu HH:mm:ss z")
D = datetime
   13-Jul-2025 00:00:00 EDT

그런 다음 표준 시간대를 로스앤젤레스 지역으로 변경합니다. 달라진 표준 시간대에서의 동일한 시점을 나타내도록 원래의 날짜와 시간 값이 변경됩니다.

D.TimeZone = "America/Los_Angeles"
D = datetime
   12-Jul-2025 21:00:00 PDT

다른 표준 시간대를 갖는 datetime 값끼리 비교하기

다른 표준 시간대를 갖는 datetime 값끼리 비교하면 표준 시간대 오프셋을 고려하여 비교가 수행됩니다. 그러나 표준 시간대가 지정되지 않은 배열에는 알려진 표준 시간대 오프셋이 없기 때문에, 표준 시간대가 지정된 datetime 배열과 지정되지 않은 배열은 비교할 수 없습니다. 두 배열 모두 표준 시간대가 지정되어 있거나 지정되어 있지 않아야 합니다.

예를 들어, datetime 값을 만듭니다. 그런 다음 이 값을 복사하고 표준 시간대를 변경합니다.

NYTime = datetime("today", ...
                  TimeZone="America/New_York", ...
                  Format="dd-MMM-uuuu HH:mm:ss z")
NYTime = datetime
   13-Jul-2025 00:00:00 EDT

LATime = NYTime;
LATime.TimeZone = "America/Los_Angeles"
LATime = datetime
   12-Jul-2025 21:00:00 PDT

== 연산자를 사용하여 두 값을 비교합니다. 둘 다 동일한 시점으로 조정되므로 두 값이 동일합니다.

AreTimesEqual = NYTime == LATime
AreTimesEqual = logical
   1

두 시간 사이에 사실상 차이가 없습니다.

TimeDiff = LATime - NYTime
TimeDiff = duration
   00:00:00

이제 로스앤젤레스 시간에 2시간을 더합니다.

LATime = LATime + hours(2)
LATime = datetime
   12-Jul-2025 23:00:00 PDT

두 시간을 비교합니다. 이들의 날짜와 시간 값에도 불구하고, 로스앤젤레스의 시간이 뉴욕의 시간보다 2시간 늦습니다.

IsLATimeLater = LATime > NYTime
IsLATimeLater = logical
   1

두 시간 사이의 차이는 2시간입니다.

TimeDiff = LATime - NYTime
TimeDiff = duration
   02:00:00

다른 표준 시간대를 갖는 datetime 배열끼리 결합하기

TimeZone 속성은 datetime 배열 내 모든 요소에 적용됩니다. 하지만 서로 다른 표준 시간대를 갖는 datetime 배열끼리 결합할 수 있습니다. 결합된 배열은 첫 번째 배열과 동일한 표준 시간대를 가집니다. 표준 시간대가 지정되지 않은 배열에는 알려진 표준 시간대 오프셋이 없기 때문에, 표준 시간대가 지정된 datetime 배열과 지정되지 않은 배열은 결합할 수 없습니다. 두 배열 모두 표준 시간대가 지정되어 있거나 지정되어 있지 않아야 합니다.

예를 들어, NYTimeLATime을 결합합니다. 결과는 뉴욕의 표준 시간대를 갖습니다.

combinedNYZone = [NYTime LATime]
combinedNYZone = 1×2 datetime
   13-Jul-2025 00:00:00 EDT   13-Jul-2025 02:00:00 EDT

이번에는 순서를 반대로 하여 결합합니다. 결과는 로스앤젤레스 표준 시간대를 갖습니다.

combinedLAZone = [LATime NYTime]
combinedLAZone = 1×2 datetime
   12-Jul-2025 23:00:00 PDT   12-Jul-2025 21:00:00 PDT

특수 표준 시간대를 사용하여 윤초 반영하기

윤초는 UTC에 적용되는 1초만큼의 조정입니다. 윤초는 원자 시계에 기반한 정밀한 시간과, 지구 회전 속도의 미세한 변화로 인해 달라지는 관측 태양시 사이의 차이를 보정하기 위해 1972년에 도입되었습니다. 이러한 변화는 예측 가능한 패턴을 갖지 않기 때문에 윤초의 실시가 공표되었습니다. MATLAB에 적용된 윤초 데이터는 IERS(International Earth Rotation and Reference Systems Service)에서 제공한 것입니다. 자세한 내용은 IERS Bulletins를 참조하십시오.

datetime 데이터형은 윤초를 고려하는 특수 표준 시간대를 가집니다. 윤초가 사용되는 계산이나 비교에서는 표준 시간대를 "UTCLeapSeconds"로 지정하십시오. 이 표준 시간대를 사용할 때는 디폴트 형식이 날짜, 시간, 그리고 ISO 8601 표준에 따라 UTC를 나타내는 문자 Z를 포함합니다.

todayLS = datetime("today",TimeZone="UTCLeapSeconds")
todayLS = datetime
   2025-07-13T00:00:00.000Z

datetime형 배열이 하나는 윤초를 갖고 다른 하나는 윤초를 갖지 않으면 이 둘을 결합하거나 비교할 수 없습니다.

윤초의 영향을 살펴보는 한 가지 방법은 UTC 표준 시간대와 UTCLeapSeconds 표준 시간대에서 오늘 날짜와 1972년 1월 1일 사이의 길이를 계산하는 것입니다. 먼저 UTC 시간대에서 시간 길이를 계산합니다. 시간 길이는 hh:mm:ss 형식으로 표시됩니다.

durationWithoutLS = datetime("today",TimeZone="UTC") - datetime(1972,1,1,TimeZone="UTC")
durationWithoutLS = duration
   469248:00:00

그런 다음 UTCLeapSeconds 시간대에서 시간 길이를 계산합니다. 두 시간 길이 사이의 차이는 1972년에 공표된 윤초의 누적 영향으로 인한 것입니다.

durationWithLS = datetime("today",TimeZone="UTCLeapSeconds") - datetime(1972,1,1,TimeZone="UTCLeapSeconds")
durationWithLS = duration
   469248:00:27

MATLAB이 인식하는 모든 윤초와 각 윤초가 공표된 날짜를 보려면 leapseconds 함수를 사용하십시오.

LS = leapseconds
LS=27×2 timetable
       Date        Type    CumulativeAdjustment
    ___________    ____    ____________________

    30-Jun-1972     +              1 sec       
    31-Dec-1972     +              2 sec       
    31-Dec-1973     +              3 sec       
    31-Dec-1974     +              4 sec       
    31-Dec-1975     +              5 sec       
    31-Dec-1976     +              6 sec       
    31-Dec-1977     +              7 sec       
    31-Dec-1978     +              8 sec       
    31-Dec-1979     +              9 sec       
    30-Jun-1981     +             10 sec       
    30-Jun-1982     +             11 sec       
    30-Jun-1983     +             12 sec       
    30-Jun-1985     +             13 sec       
    31-Dec-1987     +             14 sec       
    31-Dec-1989     +             15 sec       
    31-Dec-1990     +             16 sec       
      ⋮

두 번째 출력은 MATLAB에서 사용되는 윤초 데이터의 IERS Bulletin C 버전 번호를 반환합니다.

[~,LSvers] = leapseconds
LSvers = 
68

참고 항목

| |

도움말 항목