Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Datum vergleichen

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.02.2005
    Beiträge
    40

    Datum vergleichen

    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

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    also
    Code:
    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
    Code:
    test "$DATE1" == "$DATE2"
    respektive
    Code:
    [ "$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:
    Code:
    if [ "$DATE1" == "$DATE2" ]
    then
          echo "DATE1 == DATE2"
    else
          echo "two different dates!"
    fi
    Geändert von jeebee (06-10-2006 um 18:42 Uhr)

  3. #3
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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:
    Code:
    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:
    Code:
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.02.2005
    Beiträge
    40
    Zitat Zitat von peschmae Beitrag anzeigen
    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:
    Code:
    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:
    Code:
    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

  5. #5
    Registrierter Benutzer
    Registriert seit
    08.02.2005
    Beiträge
    40
    Irgendwie check ichs nicht:

    Code:
    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

  6. #6
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Er frisst nur "Oct" nicht "Okt"

    Also dem Date noch die LANG-Variable auf C setzen:
    Code:
    date +%s -d `LANG=C date +%b-%d-%m`
    aber fürs konkrete Beispiel tuts ja auch ein date +%s

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.02.2005
    Beiträge
    40
    Zitat Zitat von peschmae Beitrag anzeigen
    Er frisst nur "Oct" nicht "Okt"

    Also dem Date noch die LANG-Variable auf C setzen:
    Code:
    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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •