날짜/시간 비교하기
이 예제에서는 관계 연산자와 비교 함수를 사용하여 날짜, 시간 및 기간을 비교하는 방법을 보여줍니다. datetime
및 duration
데이터형은 날짜와 시간을 정량적으로 나타내므로 숫자형 배열을 비교하는 데 사용하는 것과 동일한 관계 연산자를 사용할 수 있습니다. 하지만 비교는 데이터형에 따라 약간 다른 의미를 갖습니다.
datetime
형 값은 다른datetime
형 값보다 이전 시점이거나, 동일한 시점이거나, 이후 시점일 수 있습니다.duration
형 값은 다른duration
형 값보다 시간의 길이가 짧거나 동일하거나 길 수 있습니다.
calendarDuration
데이터형은 관계 연산자를 사용한 비교를 지원하지 않습니다. 달력 단위는 반드시 고정된 길이의 시간을 나타내지는 않습니다.
두 datetime
형 배열을 비교하고 두 duration
형 배열을 비교할 수 있습니다. 관계 연산자는 요소별 비교를 수행하므로 배열의 크기가 서로 호환되어야 합니다. 가장 간단한 경우는 두 개의 배열이 동일한 크기이거나 한쪽이 스칼라일 때입니다. 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오.
날짜와 시간은 텍스트로 나타낼 수도 있고, 기간은 텍스트 및 숫자로 나타낼 수도 있습니다. 따라서 datetime
형 배열을 텍스트와 비교하고 duration
형 배열을 텍스트 및 숫자와 비교할 수 있습니다. 관계 연산자는 연산을 수행하기 전에 텍스트와 숫자를 올바른 데이터형으로 변환합니다.
datetime
형 배열과 duration
형 배열은 비교할 수 없습니다. 그러나 datetime
형 배열의 성분을 숫자 또는 duration
형 배열과 비교할 수 있습니다.
datetime
형 값 비교하기
datetime
형 배열을 만듭니다. 날짜/시간을 나타내는 텍스트를 변환하려면 datetime
함수를 사용합니다.
d1 = datetime("2022-06-05 11:37:05")
d1 = datetime
05-Jun-2022 11:37:05
datetime
형 성분인 년, 월, 일, 시, 분, 초를 나타내는 입력 숫자형 배열을 변환하여 또 다른 datetime
형 배열을 만듭니다.
d2 = datetime(2022,2:4:10,15,12,0,0)
d2 = 1x3 datetime
15-Feb-2022 12:00:00 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00
두 개의 datetime
형 배열을 비교합니다. 이 결과는 d2
의 어떤 요소가 d1
보다 이후인지 보여줍니다.
tf = d2 > d1
tf = 1x3 logical array
0 1 1
일치하는 요소만 포함하는 datetime
형 배열을 만들려면 tf
를 사용하여 d2
의 요소를 참조합니다.
afterd1 = d2(tf)
afterd1 = 1x2 datetime
15-Jun-2022 12:00:00 15-Oct-2022 12:00:00
텍스트 및 datetime
형 값
datetime
함수가 인식하는 형식의 날짜와 시간을 나타내는 텍스트가 있는 경우 이 텍스트를 datetime
형 배열과 비교할 수 있습니다. 비교 시 묵시적으로 텍스트가 변환됩니다.
예를 들어, d2
를 2022년 6월 1일을 나타내는 문자열과 비교합니다. (문자열이 날짜만 지정하는 경우 묵시적으로 datetime
형으로 변환하면 시간이 자정으로 설정됩니다.) d2
의 첫 번째 요소는 6월 1일보다 이전입니다.
tf = d2 >= "2022-06-01"
tf = 1x3 logical array
0 1 1
afterJune1 = d2(tf)
afterJune1 = 1x2 datetime
15-Jun-2022 12:00:00 15-Oct-2022 12:00:00
datetime
형 배열의 수와 성분
datetime
데이터형은 datetime
형 값의 성분에 대한 액세스를 제공합니다. year
, quarter
, month
, day
, hour
, minute
, second
함수를 사용하여 성분에 액세스합니다. 이러한 함수는 숫자를 반환하므로 이들 성분을 숫자 또는 duration
형 값과 비교할 수 있습니다.
예를 들어, datetime
형 배열 d2
를 표시합니다. 그런 다음 월 성분을 표시합니다.
d2
d2 = 1x3 datetime
15-Feb-2022 12:00:00 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00
m = month(d2)
m = 1×3
2 6 10
월 성분에 액세스하는 또 다른 방법은 d2
의 Month
속성을 사용하는 것입니다. Year
, Month
, Day
, Hour
, Minute
, Second
속성을 통해 datetime
성분에 액세스할 수 있습니다.
m = d2.Month
m = 1×3
2 6 10
6월보다 이전인 d2
의 요소를 찾기 위해 d2
를 6월에 해당하는 숫자형 값과 비교합니다. 그런 다음 d2
의 요소를 참조합니다.
tf = month(d2) < 6
tf = 1x3 logical array
1 0 0
beforeJune = d2(tf)
beforeJune = datetime
15-Feb-2022 12:00:00
duration
형 배열 비교하기
duration
형 배열을 만듭니다. hh:mm:ss
형식의 텍스트를 변환하려면 duration
함수를 사용하십시오.
t1 = duration("03:37:12")
t1 = duration
03:37:12
시, 분, 초를 나타내는 입력 숫자형 배열을 변환하여 또 다른 duration
형 배열을 만듭니다.
t2 = duration(0:2:6,30,0)
t2 = 1x4 duration
00:30:00 02:30:00 04:30:00 06:30:00
두 개의 duration
형 배열을 비교합니다. 이 결과는 t2
의 어떤 요소가 t1
보다 긴지 보여줍니다.
tf = t2 > t1
tf = 1x4 logical array
0 0 1 1
일치하는 요소만 포함하는 새 duration
형 배열을 만들려면 tf
를 사용하여 t2
의 요소를 참조합니다.
longerThanT1 = t2(tf)
longerThanT1 = 1x2 duration
04:30:00 06:30:00
텍스트 및 duration
형 값
duration
함수가 인식하는 형식의 시간 길이를 나타내는 텍스트가 있는 경우 이 텍스트를 duration
형 배열과 비교할 수 있습니다. 비교 시 묵시적으로 텍스트가 변환됩니다.
예를 들어, t2
를 2시간 5분을 나타내는 문자열과 비교해 보겠습니다. t2
의 첫 번째 요소가 더 짧습니다.
tf = t2 >= "02:05:00"
tf = 1x4 logical array
0 1 1 1
longerThan205 = t2(tf)
longerThan205 = 1x3 duration
02:30:00 04:30:00 06:30:00
숫자와 duration
형 배열
숫자형 배열을 duration
형 배열과 비교할 수 있습니다. 비교 시 숫자형 값이 고정 길이(24시간)의 일수로 처리됩니다.
t2
의 요소를 1일과 비교합니다. 모든 요소가 더 짧습니다.
tf = t2 < 1
tf = 1x4 logical array
1 1 1 1
t2(tf)
ans = 1x4 duration
00:30:00 02:30:00 04:30:00 06:30:00
t2
의 요소를 1시간과 비교합니다. t2
의 첫 번째 요소만 더 짧습니다.
tf = t2 < 1/24
tf = 1x4 logical array
1 0 0 0
t2(tf)
ans = duration
00:30:00
서로 다른 표준 시간대의 datetime
형 배열 비교하기
로스앤젤레스의 2022년 10월 1일 오후 4시 및 뉴욕의 2022년 10월 1일 오후 5시에 대한 datetime
형 값을 만듭니다. 두 도시는 표준 시간대가 서로 다릅니다.
TimeZone
이름-값 인수를 지정하여 표준 시간대가 있는 datetime
형 배열을 만들 수 있습니다. 이러한 값을 표시할 때 표준 시간대를 표시하려면 Format
이름-값 인수를 지정합니다. datetime
형 표시 형식을 입력 텍스트의 형식과 다르게 지정할 수 있습니다.
LAtime = datetime("2022-10-01 16:00:00", ... "TimeZone","America/Los_Angeles",... "Format","dd-MMM-yyyy hh:mm:ss a z")
LAtime = datetime
01-Oct-2022 04:00:00 PM PDT
NYtime = datetime("2022-10-01 17:00:00", ... "TimeZone","America/New_York",... "Format","dd-MMM-yyyy hh:mm:ss a z")
NYtime = datetime
01-Oct-2022 05:00:00 PM EDT
두 도시의 시간을 비교합니다. 같은 날 로스앤젤레스의 오후 4시는 뉴욕의 오후 5시보다 이후입니다. 표준 시간대를 지정하는 경우 datetime
형 배열의 비교는 각 배열의 표준 시간대 정보를 고려합니다.
tf = NYtime < LAtime
tf = logical
1
==
연산자를 사용하여 두 개의 datetime
형 값을 동일한 시계 시간과 비교합니다. 이 두 값은 표준 시간대가 서로 다르기 때문에 서로 같지 않습니다.
NYtime4 = datetime("2022-10-01 16:00:00", ... "TimeZone","America/New_York",... "Format","dd-MMM-yyyy hh:mm:ss a z")
NYtime4 = datetime
01-Oct-2022 04:00:00 PM EDT
tf = NYtime4 == LAtime
tf = logical
0
표준 시간대를 갖는 datetime
형 배열을 표준 시간대를 갖지 않는 datetime
형 배열과 비교할 수 없습니다. 하나의 datetime
형 배열만 표준 시간대를 갖는 경우 비교를 위한 정보가 충분하지 않습니다.
다른 함수를 사용하여 날짜/시간 비교하기
MATLAB은 날짜와 시간을 비교하는 다른 함수들을 제공합니다.
isbetween
—datetime
형 배열 또는duration
형 배열의 요소가 구간 내에 있는지 확인isdst
—datetime
형 배열의 요소가 일광 절약 시간제에 속하는지 확인isweekend
—datetime
형 배열의 요소가 주말(토요일과 일요일)에 해당하는지 확인ismissing
— 배열의 요소가 누락값(datetime
형 배열의 경우NaT
,duration
형 배열의 경우NaN
)인지 확인
datetime
형 배열 또는 duration
형 배열에 대해 집합 연산을 수행할 수도 있습니다.
union
— 두datetime
형 배열 또는 두duration
형 배열의 합집합intersect
— 두datetime
형 배열 또는 두duration
형 배열의 교집합ismember
— 첫 번째datetime
형 또는duration
형 배열의 요소 중 두 번째datetime
형 또는duration
형 배열에도 있는 요소setdiff
— 두datetime
형 배열 또는 두duration
형 배열의 차집합setxor
— 두datetime
형 배열 또는 두duration
형 배열의 배타적 OR
예를 들어, datetime
형 배열의 요소가 2022년 1분기에 해당하는지 확인합니다. (1분기의 끝은 2분기의 처음 시작과 같습니다.)
start1Q = datetime("2022-01-01"); end1Q = datetime("2022-04-01"); d = datetime(2022,2:4:10,15,12,0,0)
d = 1x3 datetime
15-Feb-2022 12:00:00 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00
1분기의 시작과 끝 사이에 d
의 어떤 요소가 있는지 확인하려면 isbetween
을 사용합니다. start1Q
와 end1Q
사이의 시간 구간을 오른쪽이 열린 구간으로 지정합니다.
tf = isbetween(d,start1Q,end1Q,"openright")
tf = 1x3 logical array
1 0 0
isbetween
을 사용하고 오른쪽이 열린 구간을 지정하는 경우 이는 다음 표현식과 동일합니다. 이 구간은 2022년 1월 1일 시작부터 2022년 4월 1일 시작까지의 모든 시간을 포함하되, 4월 1일 시작 시점은 포함하지 않습니다. 어떤 기간의 끝을 지정하는 데 그다음 기간의 시작을 사용하는 경우에는 해당 기간을 오른쪽이 열린 구간으로 지정하는 방법을 사용해 보십시오.
tf = (start1Q <= d & d < end1Q)
tf = 1x3 logical array
1 0 0
1분기에 해당하는 d
의 요소를 표시합니다.
d(tf)
ans = datetime
15-Feb-2022 12:00:00
TimeZone
속성을 설정하여 d
의 표준 시간대를 지정합니다. 그런 다음 요소가 일광 절약 시간제에 속하는지 확인합니다.
d.TimeZone = "America/New_York";
isdst(d)
ans = 1x3 logical array
0 1 1
요소가 주말에 해당하는지 확인합니다.
isweekend(d)
ans = 1x3 logical array
0 0 1
일치하는 요소의 요일을 표시하려면 day
함수를 사용합니다.
weekendDays = d(isweekend(d))
weekendDays = datetime
15-Oct-2022 12:00:00
day(weekendDays,"name")
ans = 1x1 cell array
{'Saturday'}
참고 항목
datetime
| duration
| isbetween
| isdst
| isweekend
| ismissing
| day
| month