Bash: Zeitvariable nach UTC wandeln

linuxnutzer schrieb:
Ok, Ausgang ist aber die Variable. Gibt es eine andere Lösung die DST aus der Variablen zu berechnen? CET stimmt ja schon, geht ja nur mehr um Sommerzeit oder nicht. Es macht ja auch keinen Sinn die Sommerzeit zum Zeitpunkt des Befehls zu bestimmen.
Ohne groß darüber nachgedacht zu haben, beides probieren und das Ergebnis ohne Fehler ($?) nehmen.
 
linuxnutzer schrieb:
CET stimmt ja schon, geht ja nur mehr um Sommerzeit oder nicht.
Nö. CET ist immer Winterzeit. CEST ist Sommerzeit (Central European Summer Time).
linuxnutzer schrieb:
Es macht ja auch keinen Sinn die Sommerzeit zum Zeitpunkt des Befehls zu bestimmen.
Stimmt. Dein $(date +%Z) macht aber genau das.

So geht es:
TZ="UTC" date --date='TZ="Europe/Berlin" 2026-01-01T0:04:05' '+%Y-%m-%d %H:%M:%S'
2025-12-31 23:04:05
TZ="UTC" date --date='TZ="Europe/Berlin" 2026-05-01T0:04:05' '+%Y-%m-%d %H:%M:%S'
2026-04-30 22:04:05
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: linuxnutzer
Evil E-Lex schrieb:

Die Frage ist nur wie man das in eine Variable steckt.

Code:
sommer='2026-08-01T1:11:05'
systemtz=`timedatectl | grep "Time zone" | cut -d":" -f2 | cut -d" " -f2`

TZ="UTC" date --date="TZ=$systemtz $sommer" '+%Y-%m-%d %H:%M:%S'
date: ungültiges Datum »TZ=Europe/Vienna 2026-08-01T1:11:05“

Evil E-Lex schrieb:
'TZ="Europe/Berlin" 2026-01-01T0:04:05'

Ich schaffe dieses Quoting mit Variablen nicht.

Wenn mal das als 1. Schritt funktioniert, gehört das ja wieder als Variable definiert.
 
Zuletzt bearbeitet:
So vielleicht?
Bash:
❯ echo $sommer $winter
2026-08-01T1:11:05 2026-01-16T7:43:12
❯ date -u --date=@$(date "+%s" --date=$winter) '+%Y-%m-%d %H:%M:%S'
2026-01-16 06:43:12
❯ date -u --date=@$(date "+%s" --date=$sommer) '+%Y-%m-%d %H:%M:%S'
2026-07-31 23:11:05
 
  • Gefällt mir
Reaktionen: linuxnutzer
Zurück
Oben