PDA

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

jeebee
06-10-2006, 18:31
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