Main Content

날짜/시간 산술 연산

이 예제에서는 날짜/시간 값을 더하거나 빼서 정확한 단위나 달력 단위로 미래 날짜, 과거 날짜, 경과 기간을 계산하는 방법을 보여줍니다. 다른 MATLAB® 데이터형에 이러한 연산자를 사용할 때와 동일한 방식으로 날짜/시간 배열을 더하고, 빼고, 곱하고 나눌 수 있습니다. 그러나, 날짜/시간에만 고유한 몇 가지 동작이 있습니다.

datetime형 배열에 기간을 더하거나 빼기

datetime형 스칼라를 생성합니다. 기본적으로, datetime형 배열은 표준 시간대와 연결되지 않습니다.

t1 = datetime('now')
t1 = datetime
   25-Jan-2024 22:15:28

시간 시퀀스를 더하여 미래의 특정 시간을 구합니다.

t2 = t1 + hours(1:3)
t2 = 1x3 datetime
   25-Jan-2024 23:15:28   26-Jan-2024 00:15:28   26-Jan-2024 01:15:28

t2의 각 datetime형 값 쌍 간의 차분이 1시간인지 확인합니다.

dt = diff(t2)
dt = 1x2 duration
   01:00:00   01:00:00

diff는 정확한 시간, 분, 초 숫자 값으로 기간을 반환합니다.

날짜/시간에서 분 시퀀스를 빼서 과거의 특정 시간을 구합니다.

t2 = t1 - minutes(20:10:40)
t2 = 1x3 datetime
   25-Jan-2024 21:55:28   25-Jan-2024 21:45:28   25-Jan-2024 21:35:28

숫자형 배열을 datetime형 배열에 더합니다. MATLAB은 숫자형 배열의 각 값을 정확한 24시간 일수로 처리합니다.

t2 = t1 + [1:3]
t2 = 1x3 datetime
   26-Jan-2024 22:15:28   27-Jan-2024 22:15:28   28-Jan-2024 22:15:28

표준 시간대를 갖는 날짜/시간에 더하기

서로 다른 표준 시간대의 datetime형 값을 사용하거나 일광 절약 시간제 변동을 고려하려는 경우 표준 시간대와 연결된 datetime형 배열을 사용합니다. 뉴욕의 2014년 3월 8일을 나타내는 datetime형 스칼라를 생성합니다.

t1 = datetime(2014,3,8,0,0,0,'TimeZone','America/New_York')
t1 = datetime
   08-Mar-2014

고정 길이(24시간) 일의 시퀀스를 더하여 미래의 특정 시간을 구합니다.

t2 = t1 + days(0:2)
t2 = 1x3 datetime
   08-Mar-2014 00:00:00   09-Mar-2014 00:00:00   10-Mar-2014 01:00:00

일광 절약 시간제가 2014년 3월 9일에 시행되었으므로 t2의 세 번째 datetime형 값이 자정에 해당하지 않습니다.

t2의 각 datetime형 값 쌍 간의 차분이 24시간인지 확인합니다.

dt = diff(t2)
dt = 1x2 duration
   24:00:00   24:00:00

years, hours, minutes, seconds 함수의 출력값을 더하여 각각 연도, 시간, 분, 초와 같은 다른 단위의 고정 길이 기간을 더할 수 있습니다.

일광 절약 시간제 변동을 고려하려면 duration형 대신 calendarDuration형을 사용해야 합니다. calendarDuration형은 datetime형 값에 더하거나 이 값에서 뺄 때 일광 절약 시간제 변동을 고려합니다.

달력상의 일수를 t1에 더합니다.

t3 = t1 + caldays(0:2)
t3 = 1x3 datetime
   08-Mar-2014   09-Mar-2014   10-Mar-2014

3월 9일 시행된 일광 절약 시간제 변동으로 인해 t3의 각 datetime형 값 쌍 간의 차분이 항상 24시간은 아닙니다.

dt = diff(t3)
dt = 1x2 duration
   24:00:00   23:00:00

달력 기간을 datetime형 배열에 더하기

2014년 1월 31일에 달력상의 월수에 해당하는 숫자 값을 더합니다.

t1 = datetime(2014,1,31)
t1 = datetime
   31-Jan-2014

t2 = t1 + calmonths(1:4)
t2 = 1x4 datetime
   28-Feb-2014   31-Mar-2014   30-Apr-2014   31-May-2014

t2의 각 날짜/시간은 매월 마지막 날에 해당합니다.

caldiff 함수를 사용하여 달력상의 일수에 해당하는 숫자 값으로 t2의 각 datetime형 값 쌍 간의 차분을 계산합니다.

dt = caldiff(t2,'days')
dt = 1x3 calendarDuration
   31d   30d   31d

각 월은 서로 다른 일수로 구성되므로 dt의 연속된 datetime형 값 간의 일수가 항상 동일하지는 않습니다.

2014년 1월 31일에 달력상의 연수에 해당하는 숫자 값을 더합니다.

t2 = t1 + calyears(0:4)
t2 = 1x5 datetime
   31-Jan-2014   31-Jan-2015   31-Jan-2016   31-Jan-2017   31-Jan-2018

caldiff 함수를 사용하여 달력상의 일수에 해당하는 숫자 값으로 t2의 각 datetime형 값 쌍 간의 차분을 계산합니다.

dt = caldiff(t2,'days')
dt = 1x4 calendarDuration
   365d   365d   366d   365d

2016년은 윤년(366일)이므로 dt의 연속된 datetime형 값 간의 일수가 항상 동일하지는 않습니다.

calquarters, calweeks, caldays 함수를 사용하여 달력상의 분기 수, 달력상의 주 수, 달력상의 일수를 나타내는 배열을 생성하고, 이러한 배열을 datetime형 배열에서 더하거나 뺄 수 있습니다.

달력 기간 더하기는 가환성(Commutative)이 없습니다. 둘 이상의 calendarDuration형 배열을 날짜/시간에 더하는 경우 MATLAB은 명령에 표시되는 순서로 배열을 더합니다.

2014년 1월 31일에 달력상의 월수 3개월과 달력상의 일수 30일을 더합니다.

t2 = datetime(2014,1,31) + calmonths(3) + caldays(30)
t2 = datetime
   30-May-2014

아래에서는 먼저, 달력상의 일수 30일을 동일한 날짜에 더한 다음 달력상의 월수 3개월을 더합니다. 달력 기간을 날짜/시간에 더하는 경우, 더하는 일수는 원래 날짜에 따라 달라지므로 결과는 동일하지 않습니다.

t2 = datetime(2014,1,31) + caldays(30) + calmonths(3)
t2 = datetime
   02-Jun-2014

calendarDuration형 산술 연산

두 개의 달력 기간을 생성한 다음 합을 구합니다.

d1 = calyears(1) + calmonths(2) + caldays(20)
d1 = calendarDuration
   1y 2mo 20d

d2 = calmonths(11) + caldays(23)
d2 = calendarDuration
   11mo 23d

d = d1 + d2
d = calendarDuration
   2y 1mo 43d

둘 이상의 달력 기간의 합을 구하는 경우, 12보다 큰 월수는 연수로 이월됩니다. 그러나, 각 월은 다른 일수로 구성되므로 일수가 커도 월수로 이월되지는 않습니다.

인수 2를 곱하여 d를 늘립니다. 정수 값만 곱할 수 있으므로 calendarDuration형 값은 정수여야 합니다.

2*d
ans = calendarDuration
   4y 2mo 86d

정확한 단위로 경과 시간 계산

datetime형 배열에서 다른 datetime형 배열을 빼서 정확한 시간, 분, 초로 경과 시간을 계산합니다.

datetime형 값의 시퀀스와 어제(전날)의 시작 사이의 정확한 시간 길이를 구합니다.

t2 = datetime('now') + caldays(1:3)
t2 = 1x3 datetime
   26-Jan-2024 22:15:30   27-Jan-2024 22:15:30   28-Jan-2024 22:15:30

t1 = datetime('yesterday')
t1 = datetime
   24-Jan-2024

dt = t2 - t1
dt = 1x3 duration
    70:15:30    94:15:30   118:15:30

whos dt
  Name      Size            Bytes  Class       Attributes

  dt        1x3                40  duration              

dt는 시간:분:초 형식의 기간을 포함합니다.

dtFormat 속성을 변경하여 단위가 일수인 경과 기간을 표시합니다.

dt.Format = 'd'
dt = 1x3 duration
   2.9274 days   3.9274 days   4.9274 days

인수 1.2로 dt를 곱하여 duration형 값을 스케일링합니다. 기간은 정확한 길이를 가지기 때문에 소수 값으로 곱하거나 나눌 수 있습니다.

dt2 = 1.2*dt
dt2 = 1x3 duration
   3.5129 days   4.7129 days   5.9129 days

달력 단위로 경과 시간 계산

between 함수를 사용하여 두 날짜 사이에 경과된 달력상의 연수, 달력상의 월 수, 달력상의 일수를 구합니다.

t1 = datetime('today')
t1 = datetime
   25-Jan-2024

t2 = t1 + calmonths(0:2) + caldays(4)
t2 = 1x3 datetime
   29-Jan-2024   29-Feb-2024   29-Mar-2024

dt = between(t1,t2)
dt = 1x3 calendarDuration
       4d   1mo 4d   2mo 4d

참고 항목

| |