Main Content

날짜 벡터와 날짜 문자열의 이월

참고

datenumdatestr 함수는 권장되지 않습니다. 대신, datetime 값을 사용하여 날짜 일련 번호 값이나 날짜 벡터가 아닌 특정 시점을 나타내십시오. 이러한 숫자형 표현과 달리, datetime형 값은 사람이 읽을 수 있는 형식으로 표시되며, 표준 시간대와 윤초를 고려하기 위한 속성을 갖습니다. datetime형 값을 사용하도록 코드를 업데이트하는 방법에 대한 자세한 내용은 Replace Discouraged Instances of Serial Date Numbers and Date Strings 항목을 참조하십시오.

요소가 정상 범위를 벗어나는 경우 MATLAB®은 날짜 벡터 요소와 이전 요소를 모두 조정합니다. 예를 들어, 분 요소가 70인 경우 MATLAB은 시간 요소를 1로 조정하고 분 요소를 10으로 설정합니다. 분 요소가 -15인 경우 MATLAB은 시간 요소를 1 감소시키고 분 요소를 45로 설정합니다.

이 예에서, 월 요소는 값 22를 가집니다. MATLAB은 연도 값을 2022로 증가시키고 월을 10월로 설정합니다. datetime 함수와 datestr 함수는 모두 정상 범위를 벗어나는 월 요소를 조정합니다. 하지만 datestr은 권장되지 않습니다.

d1 = datetime([2021 22 03 00 00 00])
d1 = 

  datetime

   03-Oct-2022
d2 = datestr([2021 22 03 00 00 00])
d2 =

    '03-Oct-2022'

이 두 함수는 월 성분이 아닌 모든 성분에 있는 음수 값을 동일한 방식으로 고려합니다. 예를 들어 다음 호출은 모두 7(7월)로 지정된 월과 -5로 지정된 일수가 포함된 입력값을 취합니다. 그리고 6월의 마지막 날(6월 30일)에서 5를 빼서 2022년 6월 25일을 반환 날짜로 산출합니다.

d1 = datetime([2022 07 -05 00 00 00])
d1 = 

  datetime

   25-Jun-2022
d2 = datestr([2022 07 -05 00 00 00])
d2 =

    '25-Jun-2022'

월 성분이 1보다 작은 숫자인 경우 이 규칙에 예외가 발생합니다. 이 경우 datetimedatestr이 서로 다르게 동작합니다. datetime 함수는 연도 성분의 시작 시점에서 월 성분을 빼서 출력 날짜가 이전 해에 속하도록 합니다. 예를 들어 2022년에 대한 입력값으로 다음을 호출하면 2021년 7월 3일의 날짜가 반환되는데, 월 성분이 -5이기 때문입니다.

d1 = datetime([2022 -5 3 0 0 0])
d1 = 

  datetime

   03-Jul-2021

하지만 datestr은 출력값의 월 성분을 2022년 1월로 설정합니다. 입력값의 월 성분이 1보다 작으면 datestr은 이를 1로 처리합니다.

d2 = datestr([2022 -5 3 0 0 0])
d2 =

    '03-Jan-2022'

값 이월은 datenum 함수를 사용하여 날짜 및 시간을 나타내는 텍스트를 변환할 때도 적용됩니다. 예를 들어, datenum은 2022년 10월 3일과 2022년 9월 33일을 동일한 날짜로 해석하며, 동일한 날짜 일련 번호 값을 반환합니다. 그러나 다시 언급하지만 datenum은 권장되지 않습니다.

d = datenum("2022-10-03")
d =

      738797
d = datenum("2022-09-33")
d =

      738797

하지만 datetime 함수는 2022년 9월 33일을 나타내는 텍스트를 해석하지 않습니다. 이 함수는 규칙 범위를 벗어나는 날짜와 시간을 지정하는 텍스트의 값은 이월하려고 하지 않습니다. 대신 오류가 발생합니다.

d = datetime("2022-10-03")
d = 

  datetime

   03-Oct-2022
d = datetime("2022-09-33")
Error using datetime
Could not recognize the date/time format of '2022-09-33'. You can specify a format using the 'InputFormat'
parameter. If the date/time text contains day, month, or time zone names in a language foreign to the
'en_US' locale, those might not be recognized. You can specify a different locale using the 'Locale'
parameter.