필터 지우기
필터 지우기

Converting a string to a datetime array for the 29th February

조회 수: 8 (최근 30일)
Michael Daly
Michael Daly 2022년 12월 13일
답변: Dongyue 2022년 12월 15일
When I enter the following code:
a = 'Feb 29 08:59:21';
t = datetime(a,'InputFormat','MMM dd HH:mm:ss');
I receive an error:
-------------------------------
Error using datetime (line 635)
Unable to convert 'Feb 29 08:59:21' to datetime using the format 'MMM dd HH:mm:ss'. 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.
-------------------------------
If I use:
a = 'Feb 28 08:59:21';
t = datetime(a,'InputFormat','MMM dd HH:mm:ss');
This works fine.
I assume this has something to do with there being no year specified and the 29th February only happening on a leap year?
Michael.
  댓글 수: 5
Peter Perkins
Peter Perkins 2022년 12월 13일
Michael, the error msg you got is correct, but not all that helpful. We are definitely aware of that, and it will improve at some point.
Also, notice that while
% datetime("29-Feb-2022")
is an error,
datetime(2022,2,29)
ans = datetime
01-Mar-2022
is not. Why is that? Because you'd want
t = datetime(2022,2,1:60);
t([1 end])
ans = 1×2 datetime array
01-Feb-2022 01-Apr-2022
to work. That has a legitimate use case. There's no legitimate use for "29-Feb-2022", no software should ever be creating that timestamp for import into MATLAB.
Michael Daly
Michael Daly 2022년 12월 14일
Interesting point here too. Some things are relative.

댓글을 달려면 로그인하십시오.

답변 (1개)

Dongyue
Dongyue 2022년 12월 15일
If you do not specify the year, MATLAB will automatically view it as the current year. Since 2022 is not a leap year, you will get an error if you want to use datetime for Feb 29th.

카테고리

Help CenterFile Exchange에서 Calendar에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by