Main Content

날짜 벡터 변환에서 예기치 않은 출력값이 반환되는 경우

참고

datenumdatestr 함수는 권장되지 않습니다. 대신, datetime 값을 사용하여 날짜 일련 번호 값이나 날짜 벡터가 아닌 특정 시점을 나타내십시오. 이러한 숫자형 표현과 달리, datetime형 값은 사람이 읽을 수 있는 형식으로 표시되므로, 대개의 경우 텍스트로 변환할 필요가 없습니다.

날짜 벡터를 텍스트로 변환해야 하는 경우 먼저 datetime형 값으로 변환한 후 string 함수나 char 함수를 사용하여 datetime형 값을 텍스트로 변환하는 것이 가장 좋습니다. datetime형 값을 사용하도록 코드를 업데이트하는 방법에 대한 자세한 내용은 Replace Discouraged Instances of Serial Date Numbers and Date Strings 항목을 참조하십시오.

datestr 함수를 사용하여 날짜 벡터를 텍스트로 직접 변환할 수 있지만, 그럴 경우 이 섹션에 설명된 대로 예기치 못한 결과가 발생할 수 있습니다.

날짜 벡터는 숫자로 구성된 1×6 행 벡터이므로, datestr 함수가 입력 날짜 벡터를 날짜 일련 번호 값으로 구성된 벡터로 해석하여 예기치 않은 출력을 반환할 수 있습니다. 또는 날짜 일련 번호 값으로 구성된 벡터를 날짜 벡터로 해석할 수도 있습니다. 이러한 모호성은 datestr이 발견적 규칙을 사용하여 1×6 행 벡터를 날짜 벡터 또는 6개의 날짜 일련 번호 값으로 구성된 벡터로 해석하기 때문입니다. m×6 숫자형 행렬도 각 행이 날짜 벡터 또는 6개의 날짜 일련 번호 값으로 해석될 수 있기 때문에 여기에도 동일한 모호성이 적용됩니다.

예를 들어, 연도 3000을 포함하는 날짜 벡터가 있다고 가정해 보겠습니다. 이 연도는 datestr이 날짜 벡터의 요소로 해석하는 연도의 범위를 벗어납니다. 따라서, 이 입력값은 날짜 일련 번호 값으로 구성된 1×6 벡터로 해석됩니다.

d = datestr([3000 11 05 10 32 56])
d =

  6×11 char array

    '18-Mar-0008'
    '11-Jan-0000'
    '05-Jan-0000'
    '10-Jan-0000'
    '01-Feb-0000'
    '25-Feb-0000'

여기서 datestr은 3000을 날짜 일련 번호 값으로 해석하며 이를 '18-Mar-0008'(0-Jan-0000로부터 3000일 이후의 날짜)이라는 텍스트로 변환합니다. 또한, datestr은 다음 5개 요소를 날짜 일련 번호 값인 것처럼 변환합니다.

이러한 날짜 벡터를 텍스트로 변환하는 방법은 두 가지가 있습니다.

  • 권장 방법은 날짜 벡터를 datetime형 값으로 변환하는 것입니다. 그런 다음 char, cellstr 또는 string 함수를 사용하여 변환합니다. datetime 함수는 1×6 숫자형 벡터를 항상 날짜 벡터로 취급합니다.

    dt = datetime([3000 11 05 10 32 56]);
    ds = string(dt)
    
    dt =
    
        "05-Nov-3000 10:32:56"
    
  • 다른 방법은 datenum 함수를 사용하여 이러한 날짜 벡터를 날짜 일련 번호 값으로 변환하는 것입니다. 그런 다음 datestr을 사용하여 날짜 번호 값을 문자형 벡터로 변환합니다.

    dn = datenum([3000 11 05 10 32 56]);
    ds = datestr(dn)
    
    ds =
    
        '05-Nov-3000 10:32:56'
    

날짜를 텍스트로 변환하는 경우 datestr은 발견적 규칙을 사용하여 입력값을 날짜 벡터나 날짜 일련 번호 값으로 해석합니다. m×6 행렬이 있다고 가정해 보겠습니다. datestr 함수는 다음과 같은 경우 이 행렬을 m개의 날짜 벡터로 해석합니다.

  • 처음 5개의 열에 정수가 포함된 경우.

  • 각 행의 합에 대한 절댓값이 1500–2500 범위 내에 있는 경우.

임의의 행에 대해 두 조건 중 하나가 false이면 datestrm×6 행렬을 날짜 일련 번호 값으로 구성된 m×6 행렬로 해석합니다.

일반적으로, 1700–2300 범위 내의 연도를 포함하는 날짜는 날짜 벡터로 해석됩니다. 그러나, datestr은 정상 범위를 벗어나는 월, 일, 시, 분, 초 값을 포함하는 행을 날짜 일련 번호 값으로 해석할 수 있습니다. 예를 들어, datestr은 연도 2020에 대한 다음 날짜 벡터를 올바르게 해석합니다.

d = datestr([2020 06 21 10 51 00])
d =

    '21-Jun-2020 10:51:00'

그러나 일반적인 범위(1–31)를 벗어나는 일 값의 경우, datestr은 벡터의 각 요소에 대해 날짜를 반환합니다.

d = datestr([2020 06 2110 10 51 00])
d =

  6×11 char array

    '12-Jul-0005'
    '06-Jan-0000'
    '10-Oct-0005'
    '10-Jan-0000'
    '20-Feb-0000'
    '00-Jan-0000'

datetime 함수는 숫자형 입력값을 항상 날짜 벡터로 취급합니다. 이 경우 2110을 2020년 6월 1일로부터 2110번째 날로 해석하여 적절한 날짜를 계산합니다.

d = datetime([2020 06 2110 10 51 00])
d = 

  datetime

   11-Mar-2026 10:51:00
  • datestr이 날짜 일련 번호 값으로 잘못 해석할 수 있는 날짜 벡터로 구성된 행렬이 있는 경우, datetime 함수 또는 datenum 함수를 사용하여 행렬을 변환하십시오. 그런 다음, 이러한 값을 텍스트로 변환하십시오.

  • datestr이 날짜 벡터로 해석할 수 있는 날짜 일련 번호 값으로 구성된 행렬이 있는 경우, 먼저 행렬을 열 벡터로 변환하십시오. 그런 다음, datestr을 사용하여 열 벡터를 변환하십시오.

참고 항목

| | |

관련 항목