Archiv verlassen und diese Seite im Standarddesign anzeigen : Datum vergleichen
bert2002
06-10-2006, 13:46
Mojn,
ich versuche gerade krampfhaft zwei Datums zu vergleichen in der Bash. Ich habe die Daten im folgenden Format vorliegen: "Sep-10-06". Kann ich die irgendwie vergleichen ohne das "Sep" zu einer Zahl zu bringen bzw. gibt es eine einfache möglichkeit Sept in eine Zahl zu formatieren?
Danke! && MfG bert2002
also
date +%m-%d-%y gibt für mich 10-06-06 aus (für den 6. Okt 2006)
/edit: abgesehen davon solltest du doch mit
test "$DATE1" == "$DATE2" respektive
[ "$DATE1" == "$DATE2" ] die zwei Strings vergleichen können (test gibt 0 für TRUE und 1 für FALSE zurück!). Die [] sind eine alternative Notation für 'test' welche vor allem (meiner Meinung nach) für 'if'-Konstrukte gebraucht werden. Bsp:
if [ "$DATE1" == "$DATE2" ]
then
echo "DATE1 == DATE2"
else
echo "two different dates!"
fi
peschmae
06-10-2006, 19:47
Falls du wissen willst welches vorher war oder so ist die schlauste Variante die ich bisher kenne, die Daten ins Format "Sekunden seit 1.1.1970" umzuwandeln.
GNU Date kann das:
peschmae@sid:~$ date +%s -d Sep-10-05
1126303200
peschmae@sid:~$ date +%s -d Sep-10-00
968536800
dann kannst du die mit dem schon erwähnten "test" bzw. [ wie normale Integer vergleichen:
if [ $(date +%s -d Sep-10-00) -ge $(date +%s -d Sep-10-05) ]; then
echo "00 grösser 05";
else
echo "05 grösser 00";
fi
MfG Peschmä
bert2002
07-10-2006, 15:14
Falls du wissen willst welches vorher war oder so ist die schlauste Variante die ich bisher kenne, die Daten ins Format "Sekunden seit 1.1.1970" umzuwandeln.
GNU Date kann das:
peschmae@sid:~$ date +%s -d Sep-10-05
1126303200
peschmae@sid:~$ date +%s -d Sep-10-00
968536800
dann kannst du die mit dem schon erwähnten "test" bzw. [ wie normale Integer vergleichen:
if [ $(date +%s -d Sep-10-00) -ge $(date +%s -d Sep-10-05) ]; then
echo "00 grösser 05";
else
echo "05 grösser 00";
fi
MfG Peschmä
Ja genau, sowas hab ich gesucht.
Danke! && MfG bert2002
bert2002
07-10-2006, 18:00
Irgendwie check ichs nicht:
steffen@laptop:~$ date +%s -d `date +%b-%d-%m`
date: ungültiges Datum ,,Okt-07-10"
steffen@laptop:~$ date +%s -d Sep-10-05
1126303200
steffen@laptop:~$
Überseh ich da was oder....
Danke! && MfG bert2002
peschmae
07-10-2006, 18:52
Er frisst nur "Oct" nicht "Okt" :D
Also dem Date noch die LANG-Variable auf C setzen:
date +%s -d `LANG=C date +%b-%d-%m`
aber fürs konkrete Beispiel tuts ja auch ein date +%s ;)
MfG Peschmä
bert2002
07-10-2006, 19:21
Er frisst nur "Oct" nicht "Okt" :D
Also dem Date noch die LANG-Variable auf C setzen:
date +%s -d `LANG=C date +%b-%d-%m`
aber fürs konkrete Beispiel tuts ja auch ein date +%s ;)
MfG Peschmä
Oh my god. Ja vielen Dank, da haette man auch mal drauf koennen kommen :(
Danke! && MfG bert2002
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.