Why doesn't Matlab recognize my data format?

25 ビュー (過去 30 日間)
jjjSAN
jjjSAN 2022 年 6 月 22 日
編集済み: jjjSAN 2022 年 6 月 23 日
Hello everyone,
thanks for reading. My point is that I have a time series from which I want to remove all the 29 of february. My time series is 10 years long.
Now, if I ask Matlab what's the format of my datetime, it replies me with:
ans =
'dd/MM/uuuu'
and, in fact it is correct. But when I ask Matlab to find in my matrix the position of 29 of february I get this error:
Unable to convert the text '29/02/2018' to a datetime value because its
format was not recognized.
Does someone know why?
I specify that I also tried to do table2timetable before running the find function, but it doesn't work.
Thank you!

回答 (2 件)

Cris LaPierre
Cris LaPierre 2022 年 6 月 22 日
編集済み: Cris LaPierre 2022 年 6 月 22 日
The error is because 2018 was not a leap year. 2016 and 2020 were.
d1 = '29/02/2016';
datetime(d1)
ans = datetime
29-Feb-2016
% The error you see
d2 = '29/02/2018';
datetime(d2)
Error using datetime
Could not recognize the date/time format of '29/02/2018'. 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.
  2 件のコメント
Jan
Jan 2022 年 6 月 22 日
You have answered this question 30 minutes before?! I did not see your answer before I typed my onw and even not after I sent it. Is it possible that I see the contents with a delay of 30 minutes, when I access the US server of mathworks.com from Europe?
Cris LaPierre
Cris LaPierre 2022 年 6 月 22 日
I wouldn't rule anything out. @Rena Berman might be able to answer more definitively.

サインインしてコメントする。


Jan
Jan 2022 年 6 月 22 日
編集済み: Jan 2022 年 6 月 22 日
a = datetime('28/02/2018', 'InputFormat', 'dd/MM/uuuu')
a = datetime
28-Feb-2018
b = datetime('29/02/2018', 'InputFormat', 'dd/MM/uuuu')
% FAILS:
% Unable to convert the text '29/02/2018' to a datetime value because its
% format was not recognized.
There was no Februrary 29th in 2018.
a + days(1) % 01-Mar-2018
ans = datetime
01-Mar-2018
A workaround might be the old datenum format:
b = datetime(datevec('29/02/2018', 'dd/mm/yyyy'))
a = datetime
01-Mar-2018
Ugly, but smarter.
  1 件のコメント
jjjSAN
jjjSAN 2022 年 6 月 23 日
編集済み: jjjSAN 2022 年 6 月 23 日
Thank you all. Finally was just this easy thing of leap years fortunately :)
Sorry

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by