why does this not work?
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
>> 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'.
0 Commenti
Risposta accettata
Les Beckham
il 27 Mar 2025
Modificato: Les Beckham
il 27 Mar 2025
That doesn't work because your x is one long character vector and datetime tries to match your input format to the entire contents of x. Instead define x as either a string array or a cell array of character vectors.
Using a string array:
x = [ "0:07.50" "2:03.91" "3:57.36" "5:09.44" "6:32.90" "7:43.03" "9:43.45" ];
dt1 = datetime(x,'InputFormat','m:ss.SS')
Using a cell array of char vectors:
x= { '0:07.50' '2:03.91' '3:57.36' '5:09.44' '6:32.90' '7:43.03' '9:43.45' };
dt2 = datetime(x,'InputFormat','m:ss.SS')
isequal(dt1, dt2)
Edit:
If you want to convert your datetime array to numeric seconds:
dt_seconds = 60*minute(dt1) + second(dt1)
0 Commenti
Più risposte (3)
John D'Errico
il 27 Mar 2025
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')
0 Commenti
Star Strider
il 27 Mar 2025
Modificato: Star Strider
il 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.
.
0 Commenti
Rob
il 27 Mar 2025
Modificato: Rob
il 27 Mar 2025
3 Commenti
Steven Lord
il 27 Mar 2025
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
il 27 Mar 2025
Ah, when I tested with duration, I missed that you need to use mm instead of m
Vedere anche
Categorie
Scopri di più su Characters and Strings in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!