Why doesn't Matlab recognize my data format?

25 visualizaciones (últimos 30 días)
jjjSAN
jjjSAN el 22 de Jun. de 2022
Editada: jjjSAN el 23 de Jun. de 2022
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!

Respuestas (2)

Cris LaPierre
Cris LaPierre el 22 de Jun. de 2022
Editada: Cris LaPierre el 22 de Jun. de 2022
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 comentarios
Jan
Jan el 22 de Jun. de 2022
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 el 22 de Jun. de 2022
I wouldn't rule anything out. @Rena Berman might be able to answer more definitively.

Iniciar sesión para comentar.


Jan
Jan el 22 de Jun. de 2022
Editada: Jan el 22 de Jun. de 2022
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 comentario
jjjSAN
jjjSAN el 23 de Jun. de 2022
Editada: jjjSAN el 23 de Jun. de 2022
Thank you all. Finally was just this easy thing of leap years fortunately :)
Sorry

Iniciar sesión para comentar.

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by