Ich muss ein ISO8601-Datums- / Zeitformat mit einer enthaltenen Zeitzone (von einer externen Quelle) in Excel / VBA auf ein normales Excel-Datum analysieren. Soweit ich das beurteilen kann, verfügt Excel XP (das ist, was wir verwenden) nicht über eine Routine für diese integrierte Funktion. Ich schätze, ich sehe mir eine benutzerdefinierte VBA-Funktion für das Parsen an.
ISO8601-Daten sehen wie folgt aus:
2011-01-01
2011-01-01T12:00:00Z
2011-01-01T12:00:00+05:00
2011-01-01T12:00:00-05:00
2011-01-01T12:00:00.05381+05:00
8
um eine12
Millisekunde aufzunehmen, wenn Sie , dass Ihre Eingabe benötigen enthält es.=DATEVALUE(MID(C2,1,10))+TIMEVALUE(MID(C2,12,8))-TIMEVALUE("6:00")
Viel Googeln hat nichts ergeben, also schreibe ich meine eigene Routine. Poste es hier als zukünftige Referenz:
quelle
PtrSafe
vor jedemDeclare
auf meinem System hinzufügen .Dim d8 As Date: d8 = ISODATE("2020-01-02T16:46:00")
, der ein gültiges ISO-Datum für den 2. Januar ist, gibt er den 1. Februar zurück ... Ihre Tests sind sehr optimistisch.Ich hätte dies als Kommentar gepostet, aber ich habe nicht genug Repräsentanten - sorry!. Das war wirklich nützlich für mich - danke rix0rrr, aber ich habe festgestellt, dass die UTCToLocalTime-Funktion regionale Einstellungen berücksichtigen muss, wenn das Datum am Ende erstellt wird. Hier ist die Version, die ich in Großbritannien verwende - beachten Sie, dass die Reihenfolge von wDay und wMonth umgekehrt ist:
quelle
Die Antwort von rix0rrr ist großartig, unterstützt jedoch keine Zeitzonen-Offsets ohne Doppelpunkt oder mit nur Stunden. Ich habe die Funktion leicht erweitert, um Unterstützung für diese Formate hinzuzufügen:
quelle
Ich weiß, dass es nicht so elegant ist wie das VB-Modul, aber wenn jemand nach einer schnellen Formel sucht, die auch die Zeitzone nach '+' berücksichtigt, könnte dies der Fall sein.
wird sich verändern
zu
(Ortszeit unter Berücksichtigung der Zeitzone)
Natürlich können Sie die Länge verschiedener Trimmabschnitte ändern, wenn Sie auch Millisekunden haben oder wenn Sie nach + eine längere Zeit haben.
Verwenden
sigpwned
Sie die Formel, wenn Sie die Zeitzone ignorieren möchten.quelle
Meine Daten befinden sich auf dem Formular 20130221T133551Z (JJJJMMTT'T'HHMMSS'Z '), daher habe ich diese Variante erstellt:
(Die Zeitzonenkonvertierung wird nicht getestet und es erfolgt keine Fehlerbehandlung bei unerwarteten Eingaben.)
quelle
Sie können dies ohne VB für Anwendungen tun:
ZB um Folgendes zu analysieren:
machen:
Zum
machen:
Zum
machen:
Das obere Datumsformat sollte jedoch automatisch von Excel analysiert werden.
Dann erhalten Sie einen Excel-Wert für Datum und Uhrzeit, den Sie nach Datum und Uhrzeit formatieren können.
Ausführliche Informationen und Beispieldateien: http://blog.hani-ibrahim.de/iso-8601-parsing-in-excel-and-calc.html
quelle