Converting a string to a datetime array for the 29th February
3 次查看(过去 30 天)
显示 更早的评论
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
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)
is not. Why is that? Because you'd want
t = datetime(2022,2,1:60);
t([1 end])
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.
回答(1 个)
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.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!