Datestring in Date konvertieren und damit rechnen
Hallo Forum,
ich habe folgendes Problem:
[code]
[root@server]# date
So. 6. Okt 13:16:53 CEST 2013
[/code]
Date liefert mir ein aktuelle Datum!
Wenn ich dieses Datum aber von wo anders habe und von dem Date beispielsweise 7 Tage abziehen möchte, dachte ich, ich könnte so vorgehen:
[code]
[root@server]# date -d "So. 6. Okt 13:16:53 CEST 2013 -7 day" +"%a. %e. %b %R:%M:%S %Z %Y"
date: ungültiges Datum „So. 6. Okt 13:16:53 CEST 2013 -7 day“
[/code]
Leider bekomme ich immer die folgende Fehlermeldung.
Ich weiß nicht genau, wie ich die Formatierung richtig angehen muss.
Hat jemand eine Idee?
Schöne Grüße
ich habe folgendes Problem:
[code]
[root@server]# date
So. 6. Okt 13:16:53 CEST 2013
[/code]
Date liefert mir ein aktuelle Datum!
Wenn ich dieses Datum aber von wo anders habe und von dem Date beispielsweise 7 Tage abziehen möchte, dachte ich, ich könnte so vorgehen:
[code]
[root@server]# date -d "So. 6. Okt 13:16:53 CEST 2013 -7 day" +"%a. %e. %b %R:%M:%S %Z %Y"
date: ungültiges Datum „So. 6. Okt 13:16:53 CEST 2013 -7 day“
[/code]
Leider bekomme ich immer die folgende Fehlermeldung.
Ich weiß nicht genau, wie ich die Formatierung richtig angehen muss.
Hat jemand eine Idee?
Schöne Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 218690
Url: https://administrator.de/contentid/218690
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo LLIILLAA,
date akzeptiert nicht beliebige Strings im Paarameter -d. Wie diese formatiert sein müssen steht hier. Vor allem akzeptiert es keine deutschen Datumsangaben wie Okt oder So sondern nur die englischen Equivalente;
Ein gültiges Datum könnte beispielsweise so aussehen:
Du müsstest also deinen Date-String mit einem Script zerlegen und daraus ein gültiges Datum zusammenbauen, und dann damit rechnen.
Beispiel:
Alternativ kannst du dein Datum direkt im englischen Format ausgeben indem du die Sprach-Variable in der Shell vorher auf Englisch umstellst
und danach wieder auf Deutsch zurück:
Grüße Uwe
date akzeptiert nicht beliebige Strings im Paarameter -d. Wie diese formatiert sein müssen steht hier. Vor allem akzeptiert es keine deutschen Datumsangaben wie Okt oder So sondern nur die englischen Equivalente;
Ein gültiges Datum könnte beispielsweise so aussehen:
date -d 'Sunday 6 Oct 2013 13:16:53.000000'
Beispiel:
#!/bin/bash
RAW_DATUM='So 6. Okt 13:16:53 CEST 2013'
WOCHENTAG=$(echo "$RAW_DATUM" | cut -d' ' -f1)
TAG=$(echo "$RAW_DATUM" | cut -d' ' -f2 |cut -d'.' -f1)
MONAT=$(echo "$RAW_DATUM" | cut -d' ' -f3)
ZEIT=$(echo "$RAW_DATUM" | cut -d' ' -f4)
ZONE=$(echo "$RAW_DATUM" | cut -d' ' -f5)
JAHR=$(echo "$RAW_DATUM" | cut -d' ' -f6)
case "$WOCHENTAG" in
'Mo')
WOCHENTAG='Mon'
;;
'Di')
WOCHENTAG='Tue'
;;
'Mi')
WOCHENTAG='Wed'
;;
'Do')
WOCHENTAG='Thu'
;;
'Fr')
WOCHENTAG='Fri'
;;
'Sa')
WOCHENTAG='Sat'
;;
'So')
WOCHENTAG='Sun'
;;
esac
case "$MONAT" in
'Mär')
MONAT='Mar'
;;
'Mai')
MONAT='May'
;;
'Okt')
MONAT='Oct'
;;
'Dez')
MONAT='Dec'
;;
esac
date -d "$WOCHENTAG $TAG $MONAT $JAHR $ZEIT.000000 $ZONE - 7 days"
Alternativ kannst du dein Datum direkt im englischen Format ausgeben indem du die Sprach-Variable in der Shell vorher auf Englisch umstellst
LANG=en_US
LANG=de_DE.utf8
Grüße Uwe