why does this not work?
Afficher commentaires plus anciens
>> x='0:07.50 2:03.91 3:57.36 5:09.44 6:32.90 7:43.03 9:43.45';
>> datetime(x,'InputFormat','m:ss.SS')
Error using datetime (line 257)
Unable to convert '0:07.50 2:03.91 3:57.36 5:09.44 6:32.90 7:43.03 9:43.45' to
datetime using the format 'm:ss.SS'.
Réponse acceptée
Plus de réponses (3)
It failed because datetime did not recognize that string as a list of distinct times. Just because you know what you want code to do, does not mean it will read your mind. Code is pretty dumb in general.
x='0:07.50 2:03.91 3:57.36 5:09.44 6:32.90 7:43.03 9:43.45';
xspl = strsplit(x,' ')
datetime(xspl,'InputFormat','m:ss.SS')
Star Strider
le 27 Mar 2025
Modifié(e) : Star Strider
le 27 Mar 2025
need to separate the elements of the array (that I changed to a cell array here).
Then, it works —
x = {'0:07.50' '2:03.91' '3:57.36' '5:09.44' '6:32.90' '7:43.03' '9:43.45'};
datetime(x,'InputFormat','m:ss.SS')
.
EDIT — (27 Mar 2025 at 21:13)
Perhaps this —
x = {'0:07.50' '2:03.91' '3:57.36' '5:09.44' '6:32.90' '7:43.03' '9:43.45'};
dt = datetime(x,'InputFormat','m:ss.SS')
dtm = seconds(timeofday(dt))
This works, and there may also be other ways of doing that conversion.
.
3 commentaires
Walter Roberson
le 27 Mar 2025
Modifié(e) : Walter Roberson
le 27 Mar 2025
S = [ "0:07.50" "2:03.91" "3:57.36"];
DT = datetime(S, "InputFormat", "m:ss.SS")
D = seconds(DT - dateshift(DT, 'start', 'day'))
Or you can create a duration instead of a datetime and avoid having to do the dateshift.
S = [ "0:07.50" "2:03.91" "3:57.36"];
DT = duration(S, "InputFormat", "mm:ss.SS")
D = seconds(DT)
Walter Roberson
le 27 Mar 2025
Ah, when I tested with duration, I missed that you need to use mm instead of m
Catégories
En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!