주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

날짜/시간 산술 연산

R2026a

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

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

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

t1 = datetime("now")
t1 = datetime
   24-Jan-2026 20:59:28

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

t2 = t1 + hours(1:3)
t2 = 1×3 datetime
   24-Jan-2026 21:59:28   24-Jan-2026 22:59:28   24-Jan-2026 23:59:28

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

dt = diff(t2)
dt = 1×2 duration
   01:00:00   01:00:00

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

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

t2 = t1 - minutes(20:10:40)
t2 = 1×3 datetime
   24-Jan-2026 20:39:28   24-Jan-2026 20:29:28   24-Jan-2026 20:19:28

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

t2 = t1 + [1:3]
t2 = 1×3 datetime
   25-Jan-2026 20:59:28   26-Jan-2026 20:59:28   27-Jan-2026 20:59: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 = 1×3 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 = 1×2 duration
   24:00:00   24:00:00

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

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

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

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

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

dt = diff(t3)
dt = 1×2 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 = 1×4 datetime
   28-Feb-2014   31-Mar-2014   30-Apr-2014   31-May-2014

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

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

dt = caldiff(t2,"days")
dt = 1×3 calendarDuration
   31d   30d   31d

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

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

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

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

dt = caldiff(t2,"days")
dt = 1×4 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 = 1×3 datetime
   25-Jan-2026 20:59:29   26-Jan-2026 20:59:29   27-Jan-2026 20:59:29

t1 = datetime("yesterday")
t1 = datetime
   23-Jan-2026

dt = t2 - t1
dt = 1×3 duration
    68:59:29    92:59:29   116:59:29

whos dt
  Name      Size            Bytes  Class       Attributes

  dt        1x3                40  duration              

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

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

dt.Format = "d"
dt = 1×3 duration
   2.8746 days   3.8746 days   4.8746 days

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

dt2 = 1.2*dt
dt2 = 1×3 duration
   3.4496 days   4.6496 days   5.8496 days

달력 단위로 경과 시간 계산

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

t1 = datetime("today")
t1 = datetime
   24-Jan-2026

t2 = t1 + calmonths(0:2) + caldays(4)
t2 = 1×3 datetime
   28-Jan-2026   28-Feb-2026   28-Mar-2026

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

참고 항목

| |