Im Spreadsheet kann man über Freemarker-Spezialausdruck ${.now} auf das aktuelle Datum zugreifen:
Die Beispielausgabe erfolgt, weil im Hintergrund die Standardausgabe eines Date Objektes ausgegeben wird.
Will man nun diese Date-Objekt umformatieren, dann helfen folgende Beispiele weiter:
Code | Beispielwert | Beschreibung |
---|---|---|
${.now?long / 1000} | 1621343367 | Unix Timestamp in Sekunden |
${.now?long} | 1621343367681 | Timestamp in Millisekunden |
${.now?string(„yyyy.MM.dd HH:mm:ss“)} | 2021.05.18 15:09:27 | |
${.now?string(„yyyy.MM.dd“)} | 2021.05.18 | |
${.now} | May 18, 2021 3:09:27 PM |
Date vs. Strings
Hinweis
Die obigen Beispiele funktionieren immer, wenn man ein -Objekt benutzt, wie es bei ${.now} der Fall ist.
Hat man stattdessen wie oft ein Datum als String an der Hand, dann muss dieser String erst in ein Date- oder DateTime-Objekt umgewandelt werden.
Danach kann wie oben die Umwandlung vorgenommen werden.
z.B.
HTML
${"1995-10-25 03:05 PM"?datetime("yyyy-MM-dd hh:mm a")?string("dd.MM.yyyy")}
Weitere Beispiele um ein als String gegebenes Datum zu parsen und umzuformatieren
Gegebenes Datum als String (Zeichenkette): 2017-11-27T14:49:48+01:00
Einlesen / Parsing als Datum:
HTML
${"2017-11-27T14:49:48+01:00"?datetime("yyyy-MM-dd'T'HH:mm:ssXXX")}
Hierbei ist wichtig, dass das Datumsformat-Pattern (hier yyyy-MM-dd’T’HH:mm:ssXXX) auch dem tatsächlichen Datum entspricht.
und so könnte man es umformatieren:
HTML
${"2017-11-27T14:49:48+01:00"?datetime("yyyy-MM-dd'T'HH:mm:ssXXX")?string("dd.MM.yyyy HH:mm")}
Analog funktioniert dieses Beispiel bei zusätzlicher Angabe von Millisekunden.
Beispiel: 2017-11-27T14:49:48**.000**+01:00
HTML
${"2017-11-27T14:49:48.000+01:00"?datetime("yyyy-MM-dd'T'HH:mm:ss.sssXXX")?string("dd.MM.yyyy HH:mm")}
Das hartcodierte Datum in diesem Beispiel kann durch entsprechende Variablen (Spalten) ersetzt werden.
Hinweis: dass XXX im Format-Pattern entspricht dem Timezone-Anteil +01:00. Für +01 würde man nur ein X schreiben (Quelle)
Weitere Beispiele
Aktuelles Datum in das Zielformat umwandeln:
HTML
${.now?string("yyyy-MM-dd'T'HH:mm:ss.S'Z'")}
Ausgabe: 2021-02-22T11:39:49.885Z
Quelldatum parsen:
HTML
${"2021-02-19T17:33:12+01:00"?datetime.iso}
oder
HTML
${"2021-02-19T17:33:12+01:00"?datetime("yyyy-MM-dd'T'HH:mm:ssXXX")}
dass XXX im Format-Pattern entspricht dem Timezone-Anteil +01:00. Für +01 würde man nur ein X schreiben
Quelldatum parsen und in Zielformat umwandeln
HTML
${"2021-02-19T17:33:12+01:00"?datetime.iso?string("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")}
oder
HTML
${"2021-02-19T17:33:12+01:00"?datetime("yyyy-MM-dd'T'HH:mm:ssXXX")?string("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")}
Ausgabe: 2021-02-19T17:33:12.000Z