Ich habe eine datetime-Zeichenfolge (die von django / python stammt), die so aussieht:

datatime_str='2020-08-18 16:48:13.722422+00:00'

Ich mache dann in Matlab 2018a:

fmt_dt='yyyy-MM-dd HH:mm:ss.SSSSSS+HH:mm';
datetime(datatime_str,'TimeZone','local','Format',fmt_dt);

Und ich bekomme:

2020-08-18 00:00:13.722422+00:00

Ich bin nicht sicher, was ich falsch mache, aber das Ergebnis ist offensichtlich falsch :(

Jede Hilfe wäre toll

0
AJW 19 Aug. 2020 im 14:14

2 Antworten

Beste Antwort

Ja, das +00:00 sollte als Zeitzone formatiert sein, nicht als Stunden, Minuten. Sie können das Anzeigeformat jedoch beliebig einstellen. Dies kann sich von der Eingabe unterscheiden. Das Standard-Anzeigeformat von Matlab datetime verwirft die Sekundenbruchteile (und auch die Zeitzone, denke ich). Zum Beispiel:

fmt_dt_input='yyyy-MM-dd HH:mm:ss.SSSSSSxxxxx';
fmt_dt_show='yyyy-MM-dd HH:mm:ss.SSSSSS xxxxx';
datatime_str='2020-08-18 16:48:13.722422+00:00';

t =  datetime(datatime_str,'InputFormat',fmt_dt_input,'TimeZone','local','Format',fmt_dt_show)

Hat als Ausgabe: 2020-08-18 16:48:13.722422 +00:00

BEARBEITEN: Diese Informationen zu datetime finden Sie unter hier

2
Nathan 19 Aug. 2020 im 11:52

Ihre Eingabezeichenfolge enthält am Ende einen UTC-Offset +00:00, den Sie als Stunden und Minuten analysieren. Deshalb werden sie im Ergebnis auf 00:00 gesetzt. Verwenden Sie z.B.

datetime('2020-08-18 16:48:13.722422+00:00', 'InputFormat', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ', 'TimeZone', 'UTC')

Stattdessen (ändern Sie den TimeZone-Parameter nach Bedarf).

2
MrFuppes 19 Aug. 2020 im 11:39