날짜/시간 산술 연산
R2026b이 예제에서는 날짜/시간 값을 더하거나 빼서 정확한 단위나 달력 단위로 미래 날짜, 과거 날짜, 경과 기간을 계산하는 방법을 보여줍니다. 다른 MATLAB® 데이터형에 이러한 연산자를 사용할 때와 동일한 방식으로 날짜/시간 배열을 더하고, 빼고, 곱하고 나눌 수 있습니다. 그러나, 날짜/시간에만 고유한 몇 가지 동작이 있습니다.
datetime형 배열에 기간을 더하거나 빼기
datetime형 스칼라를 생성합니다. 기본적으로, datetime형 배열은 표준 시간대와 연결되지 않습니다.
t1 = datetime("now")t1 = datetime
07-Aug-2026 00:42:29
시간 시퀀스를 더하여 미래의 특정 시간을 구합니다.
t2 = t1 + hours(1:3)
t2 = 1×3 datetime
07-Aug-2026 01:42:29 07-Aug-2026 02:42:29 07-Aug-2026 03:42:29
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
07-Aug-2026 00:22:29 07-Aug-2026 00:12:29 07-Aug-2026 00:02:29
숫자형 배열을 datetime형 배열에 더합니다. MATLAB은 숫자형 배열의 각 값을 정확한 24시간 일수로 처리합니다.
t2 = t1 + [1:3]
t2 = 1×3 datetime
08-Aug-2026 00:42:29 09-Aug-2026 00:42:29 10-Aug-2026 00:42:29
표준 시간대를 갖는 datetime형에 더하기
서로 다른 표준 시간대의 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형에 더하기
서로 다른 시간 표준의 datetime형 값을 사용할 경우 MATLAB은 계산을 수행할 때 해당 시간 표준을 고려합니다.
2022년 10월 1일 오후 4시에 대한 datetime형 스칼라를 TT(지구시) 시간 표준으로 만듭니다.
t1_TT = datetime("2022-10-01 16:00:00",TimeStandard="TT",Format="dd-MMM-uuuu HH:mm:ss.SSS B")
t1_TT = datetime
01-Oct-2022 16:00:00.000 TT
32.184초를 더하여 미래의 특정 시간을 구합니다.
t2_TT = t1_TT+milliseconds(32184)
t2_TT = datetime
01-Oct-2022 16:00:32.184 TT
2022년 10월 1일 오후 4시에 대한 datetime형 스칼라를 국제 원자시(TAI) 시간 표준으로 만듭니다.
t1_TAI = datetime("2022-10-01 16:00:00",TimeStandard="TAI",Format="dd-MMM-uuuu HH:mm:ss.SSS B")
t1_TAI = datetime
01-Oct-2022 16:00:00.000 TAI
TT가 TAI보다 32.184초 앞서기 때문에 t1_TAI와 t2_TT가 동일한 시점을 나타내는지 확인합니다.
df = t1_TAI-t2_TT
df = duration
00: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
08-Aug-2026 00:42:30 09-Aug-2026 00:42:30 10-Aug-2026 00:42:30
t1 = datetime("yesterday")t1 = datetime
06-Aug-2026
dt = t2 - t1
dt = 1×3 duration
48:42:30 72:42:30 96:42:30
whos dtName Size Bytes Class Attributes dt 1x3 40 duration
dt는 시간:분:초 형식의 기간을 포함합니다.
dt의 Format 속성을 변경하여 단위가 일수인 경과 기간을 표시합니다.
dt.Format = "d"dt = 1×3 duration
2.0295 days 3.0295 days 4.0295 days
인수 1.2로 dt를 곱하여 duration형 값을 스케일링합니다. 기간은 정확한 길이를 가지기 때문에 소수 값으로 곱하거나 나눌 수 있습니다.
dt2 = 1.2*dt
dt2 = 1×3 duration
2.4354 days 3.6354 days 4.8354 days
달력 단위로 경과 시간 계산
between 함수를 사용하여 두 날짜 사이에 경과된 달력상의 연수, 달력상의 월 수, 달력상의 일수를 구합니다.
t1 = datetime("today")t1 = datetime
07-Aug-2026
t2 = t1 + calmonths(0:2) + caldays(4)
t2 = 1×3 datetime
11-Aug-2026 11-Sep-2026 11-Oct-2026
dt = between(t1,t2)
dt = 1×3 calendarDuration
4d 1mo 4d 2mo 4d