Can't get string to datetime conversion to work
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Nathan Heller
am 11 Jun. 2021
Bearbeitet: Walter Roberson
am 11 Mär. 2025
There seems to be some sort of inconsistency in the converting to datetime code I missed.
q=datetime('2017-05-17 19:36:00', 'InputFormat','yyyy-MM-dd HH:mm:ss')
this works just fine. However, when I am reading the input string '2017-05-17T19:36:00' from an array, stripping the T, and putting it in exactly the same, it fails to work. example:
%data{1}(n) has the string '2019-05-17T19:36:00'
b = strrep(data{1}(n),'T',' ');
disp(b);
%displaying displays 2017-05-17 19:36:00, just like the earlier statement
timestamp = datetime(b,'InputFormat',format);
When I do this, the error message:
Unable to convert '2017-05-17 19:36:00' to datetime using the format 'yyyy-MM-dd HH:mm:ss'.
is displayed. Am i missing something? are these not exactly the same? Thanks for your help.
2 Kommentare
Walter Roberson
am 11 Jun. 2021
could you attach data{1} as a mat file so we can check for odd characters?
Akzeptierte Antwort
Walter Roberson
am 11 Jun. 2021
The very first entry in your data{1} has a leading U+FEFF character, which is a unicode Byte Order Mark character, but is to be interpreted as a Zero-Width Non-Breaking Space if it occurs anywhere other than the first position
3 Kommentare
Walter Roberson
am 12 Jun. 2021
It probably only occurs once, but to be sure, use another strrep to replace char(65279) with empty
Weitere Antworten (1)
J. Alex Lee
am 11 Jun. 2021
str = '2019-05-17T19:36:00';
fmt = 'yyyy-MM-dd HH:mm:ss';
b = strrep(str,'T',' ');
disp(b);
timestamp = datetime(b,'InputFormat',fmt)
Works for me ?
4 Kommentare
J. Alex Lee
am 11 Mär. 2025
Looks like Mrz is not the "official" short literal month name for March in the de_DE localization
str_en = "11-Mar-2025 10:03:47"
dt = datetime(str_en)
string(dt,'dd-MMM-uuuu HH:mm:ss',"de_DE")
str = ["11-Mai-2025 10:03:47","11-Okt-2025 10:03:47","11-März-2025 10:03:47"]
datetime(str, "InputFormat", "dd-MMM-uuuu HH:mm:ss", "Locale", "de_DE")
Walter Roberson
am 11 Mär. 2025
Bearbeitet: Walter Roberson
am 11 Mär. 2025
de_DE also uses 'Juni' and 'Juli' instead of 'Jun' and 'Jul'
From a 2017 posting of mine:
Marz = char([77 228 114 122]); %'März' -- but protect in case your system only uses 7 bit characters for .m files
date_strings = regexprep(date_strings, {'Mrz', 'Jun(?=\W)', 'Jul(?=\W)'}, {Marz, 'Juni', 'Juli'}, 'ignorecase');
dates = datetime(date_strings,'InputFormat', 'eee MMM d HH:mm:ss yyyy', 'locale', 'de_DE');
Siehe auch
Kategorien
Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!