Datum und Uhrzeit mit Luxon#
Luxon ist eine JavaScript-Bibliothek, die die Arbeit mit Datum und Uhrzeit vereinfacht. Ausführliche Informationen zur Verwendung von Luxon finden Sie in der Luxon-Dokumentation.
Localmind Automate übergibt Datumsangaben zwischen Nodes als Zeichenketten, daher müssen Sie diese parsen. Luxon erleichtert dies.
Python-Unterstützung
Luxon ist eine JavaScript-Bibliothek. Die beiden von Localmind Automate erstellten Variablen stehen bei Verwendung von Python im Code-Node zur Verfügung, sind jedoch in ihrer Funktionalität eingeschränkt:
- Sie können mit diesen Variablen keine Luxon-Operationen durchführen. Es gibt beispielsweise kein Python-Äquivalent für
$today.minus(...)
. - Die generische Luxon-Funktionalität, wie z. B. Datumzeichenkette in Luxon konvertieren, steht Python-Benutzern nicht zur Verfügung.
Variablen#
Localmind Automate verwendet Luxon, um zwei benutzerdefinierte Variablen bereitzustellen:
now
: ein Luxon-Objekt, das den aktuellen Zeitstempel enthält. EntsprichtDateTime.now()
.today
: ein Luxon-Objekt, das den aktuellen Zeitstempel enthält, abgerundet auf den Tag. EntsprichtDateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 })
.
Beachten Sie, dass diese Variablen bei der Umwandlung in eine Zeichenkette unterschiedliche Zeitformate zurückgeben können. Dies ist das gleiche Verhalten wie bei Luxons DateTime.now()
.
1 2 3 4 5 6 |
|
1 2 3 4 5 6 |
|
1 2 3 4 5 6 |
|
Localmind Automate bietet integrierte Komfortfunktionen zur Unterstützung der Datentransformation in Ausdrücken für Datumsangaben. Weitere Informationen finden Sie unter Datentransformationsfunktionen | Datumsangaben.
Datums- und Uhrzeitverhalten in Localmind Automate#
Beachten Sie Folgendes:
- In einem Workflow konvertiert Localmind Automate Datums- und Uhrzeitangaben zwischen Nodes in Zeichenketten. Beachten Sie dies, wenn Sie Arithmetik mit Datums- und Uhrzeitangaben aus anderen Nodes durchführen.
- Mit Vanilla-JavaScript können Sie eine Zeichenkette mit
new Date('2019-06-23')
in ein Datum konvertieren. In Luxon müssen Sie eine Funktion verwenden, die das Format explizit angibt, z. B.DateTime.fromISO('2019-06-23')
oderDateTime.fromFormat("23-06-2019", "dd-MM-yyyy")
.
Einstellen der Zeitzone in Localmind Automate#
Luxon verwendet die Localmind Automate-Zeitzone. Dieser Wert ist entweder:
- Standard:
America/New York
- Eine benutzerdefinierte Zeitzone für Ihre Localmind Automate-Instanz, die mit der Umgebungsvariablen
GENERIC_TIMEZONE
festgelegt wird. - Eine benutzerdefinierte Zeitzone für einen einzelnen Workflow, die in den Workflow-Einstellungen konfiguriert wird.
Häufige Aufgaben#
Dieser Abschnitt enthält Beispiele für einige häufige Operationen. Weitere Beispiele und detaillierte Anleitungen finden Sie in der eigenen Dokumentation von Luxon.
Datumzeichenkette in Luxon konvertieren#
Sie können Datumzeichenketten und andere Datumsformate in ein Luxon-DateTime-Objekt konvertieren. Sie können von Standardformaten und von beliebigen Zeichenketten konvertieren.
Ein Unterschied zwischen Luxon DateTime und JavaScript Date
Mit Vanilla-JavaScript können Sie eine Zeichenkette mit new Date('2019-06-23')
in ein Datum konvertieren. In Luxon müssen Sie eine Funktion verwenden, die das Format explizit angibt, z. B. DateTime.fromISO('2019-06-23')
oder DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")
.
Wenn Sie ein Datum in einem unterstützten technischen Standardformat haben:#
Die meisten Datumsangaben verwenden fromISO()
. Dies erstellt ein Luxon DateTime aus einer ISO 8601-Zeichenkette. Zum Beispiel:
1 |
|
1 |
|
Die API-Dokumentation von Luxon enthält weitere Informationen zu fromISO.
Luxon bietet Funktionen zur Konvertierung für eine Reihe von Formaten. Weitere Informationen finden Sie im Luxon-Leitfaden zum Parsen technischer Formate.
Wenn Sie ein Datum als Zeichenkette haben, die kein Standardformat verwendet:#
Verwenden Sie das Ad-hoc-Parsing von Luxon. Verwenden Sie dazu die Funktion fromFormat()
, die die Zeichenkette und eine Reihe von Token bereitstellt, die das Format beschreiben.
Sie haben beispielsweise das Gründungsdatum von Localmind Automate, den 23. Juni 2019, im Format 23-06-2019
. Sie möchten dies in ein Luxon-Objekt umwandeln:
1 |
|
1 |
|
Beachten Sie bei der Verwendung von Ad-hoc-Parsing den Luxon-Warnhinweis zu Einschränkungen. Wenn Sie unerwartete Ergebnisse sehen, probieren Sie die Debugging-Anleitung aus.
N Tage ab heute abrufen#
Ermitteln Sie eine Anzahl von Tagen vor oder nach dem heutigen Tag.
Sie möchten beispielsweise ein Feld so einstellen, dass es immer das Datum sieben Tage vor dem aktuellen Datum anzeigt.
Geben Sie im Ausdruckseditor Folgendes ein:
1 |
|
Am 23. Juni 2019 gibt dies [Object: "2019-06-16T00:00:00.000+00:00"]
zurück.
Dieses Beispiel verwendet die benutzerdefinierte Variable $today
von Localmind Automate zur Vereinfachung. Sie entspricht DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).minus({days: 7})
.
Sie möchten beispielsweise eine Variable, die das Datum sieben Tage vor dem aktuellen Datum enthält.
Geben Sie im Code-Editor Folgendes ein:
1 |
|
Am 23. Juni 2019 gibt dies [Object: "2019-06-16T00:00:00.000+00:00"]
zurück.
Dieses Beispiel verwendet die benutzerdefinierte Variable $today
von Localmind Automate zur Vereinfachung. Sie entspricht DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).minus({days: 7})
.
Weitere detaillierte Informationen und Beispiele finden Sie unter:
- Luxons Anleitung zur Mathematik
- Die API-Dokumentation zu DateTime plus und DateTime minus
Menschlich lesbare Datumsangaben erstellen#
In N Tage ab heute abrufen ruft das Beispiel das Datum sieben Tage vor dem aktuellen Datum ab und gibt es als [Object: "yyyy-mm-dd-T00:00:00.000+00:00"]
(für Ausdrücke) oder yyyy-mm-dd-T00:00:00.000+00:00
(im Code-Node) zurück. Um dies lesbarer zu machen, können Sie die Formatierungsfunktionen von Luxon verwenden.
Sie möchten beispielsweise, dass das Feld, das das Datum enthält, als DD/MM/YYYY formatiert wird, sodass es am 23. Juni 2019 23/06/2019
zurückgibt.
Dieser Ausdruck ruft das Datum sieben Tage vor dem heutigen Tag ab und konvertiert es in das Format DD/MM/YYYY.
1 |
|
1 |
|
Sie können das Format ändern. Zum Beispiel:
1 |
|
Am 23. Juni 2019 gibt dies "16 June 2019" zurück.
1 |
|
Am 23. Juni 2019 gibt dies "16 June 2019" zurück.
Weitere Informationen finden Sie im Luxon-Leitfaden zu toLocaleString (Zeichenketten für Menschen).
Die Zeit zwischen zwei Datumsangaben ermitteln#
Um die Zeit zwischen zwei Datumsangaben zu ermitteln, verwenden Sie die Diffs-Funktion von Luxon. Dies subtrahiert ein Datum von einem anderen und gibt eine Dauer zurück.
Ermitteln Sie beispielsweise die Anzahl der Monate zwischen zwei Datumsangaben:
1 |
|
Dies gibt [Object: {"months":1}]
zurück.
1 |
|
Dies gibt {"months":1}
zurück.
Weitere Informationen finden Sie unter Luxons Diffs.
Ein längeres Beispiel: Wie viele Tage bis Weihnachten?#
Dieses Beispiel vereint mehrere Luxon-Funktionen, verwendet JMESPath und führt einige grundlegende Zeichenkettenmanipulationen durch.
Das Szenario: Sie möchten einen Countdown bis zum 25. Dezember. Jeden Tag soll die Anzahl der Tage bis Weihnachten angezeigt werden. Sie möchten es nicht für das nächste Jahr aktualisieren - es muss nahtlos für jedes Jahr funktionieren.
1 |
|
Dies gibt "Es sind noch <Anzahl der Tage> Tage bis Weihnachten!"
aus. Am 9. März gibt es beispielsweise "Es sind noch 291 Tage bis Weihnachten!" aus.
Eine detaillierte Erläuterung der Funktionsweise des Ausdrucks:
{{
: kennzeichnet den Beginn des Ausdrucks."Es sind noch "
: eine Zeichenkette.+
: wird verwendet, um zwei Zeichenketten zu verbinden.$today.diff()
: Dies ähnelt dem Beispiel in Die Zeit zwischen zwei Datumsangaben ermitteln, verwendet aber die benutzerdefinierte Variable$today
von Localmind Automate.DateTime.fromISO($today.year + '-12-25'), 'days'
: Dieser Teil ruft das aktuelle Jahr mit$today.year
ab, wandelt es zusammen mit Monat und Datum in eine ISO-Zeichenkette um und konvertiert dann die gesamte ISO-Zeichenkette in eine Luxon DateTime-Datenstruktur. Es teilt Luxon auch mit, dass Sie die Dauer in Tagen wünschen.toObject()
wandelt das Ergebnis von diff() in ein besser verwendbares Objekt um. An diesem Punkt gibt der Ausdruck[Object: {"days":-<Anzahl-der-Tage>}]
zurück. Am 9. März beispielsweise[Object: {"days":-291}]
..days
verwendet die JMESPath-Syntax, um nur die Anzahl der Tage aus dem Objekt abzurufen. Weitere Informationen zur Verwendung von JMESPath mit Localmind Automate finden Sie in unserer JMESpath-Dokumentation. Dies gibt Ihnen die Anzahl der Tage bis Weihnachten als negative Zahl..toString().substring(1)
wandelt die Zahl in eine Zeichenkette um und entfernt das-
.+ " Tage bis Weihnachten!"
: eine weitere Zeichenkette mit einem+
, um sie mit der vorherigen Zeichenkette zu verbinden.}}
: kennzeichnet das Ende des Ausdrucks.
1 |
|
Dies gibt "Es sind noch <Anzahl der Tage> Tage bis Weihnachten!"
aus. Am 9. März gibt es beispielsweise "Es sind noch 291 Tage bis Weihnachten!" aus.
Eine detaillierte Erläuterung der Funktionsweise des Codes:
"Es sind noch "
: eine Zeichenkette.+
: wird verwendet, um zwei Zeichenketten zu verbinden.$today.diff()
: Dies ähnelt dem Beispiel in Die Zeit zwischen zwei Datumsangaben ermitteln, verwendet aber die benutzerdefinierte Variable$today
von Localmind Automate.DateTime.fromISO($today.year + '-12-25'), 'days'
: Dieser Teil ruft das aktuelle Jahr mit$today.year
ab, wandelt es zusammen mit Monat und Datum in eine ISO-Zeichenkette um und konvertiert dann die gesamte ISO-Zeichenkette in eine Luxon DateTime-Datenstruktur. Es teilt Luxon auch mit, dass Sie die Dauer in Tagen wünschen.toObject()
wandelt das Ergebnis von diff() in ein besser verwendbares Objekt um. An diesem Punkt gibt der Ausdruck[Object: {"days":-<Anzahl-der-Tage>}]
zurück. Am 9. März beispielsweise[Object: {"days":-291}]
..days
verwendet die JMESPath-Syntax, um nur die Anzahl der Tage aus dem Objekt abzurufen. Weitere Informationen zur Verwendung von JMESPath mit Localmind Automate finden Sie in unserer JMESpath-Dokumentation. Dies gibt Ihnen die Anzahl der Tage bis Weihnachten als negative Zahl..toString().substring(1)
wandelt die Zahl in eine Zeichenkette um und entfernt das-
.+ " Tage bis Weihnachten!"
: eine weitere Zeichenkette mit einem+
, um sie mit der vorherigen Zeichenkette zu verbinden.