OSX bash - date

Dieses Thema im Forum "Mac OS X - Unix & Terminal" wurde erstellt von marvin, 07.05.2004.

  1. marvin

    marvin Thread Starter MacUser Mitglied

    Beiträge:
    52
    Zustimmungen:
    0
    MacUser seit:
    09.12.2003
    Hallo,

    kann mir jemand sagen wie ich unter der OSX Bash via "date" das Datum - (minus) einen Tag bekomme?

    Gruss
    Sven
     
  2. marvin

    marvin Thread Starter MacUser Mitglied

    Beiträge:
    52
    Zustimmungen:
    0
    MacUser seit:
    09.12.2003
     

    Bloed wenn ich jetzt selber als Erster schreibe, aber ich muss dazu sagen, dass ich eigentlich eine allgemeine BASH LOESUNG suche!

    Nochmal Gruss
    Sven

    PS: Dass Shell <> Shell ist weiss ich. Ich dachte aber Bash = Bash.?.
     
  3. Jiji

    Jiji MacUser Mitglied

    Beiträge:
    289
    Zustimmungen:
    0
    MacUser seit:
    25.02.2003
    "man date" hilft da weiter ;)

    "The command:

    date 8506131627

    sets the date to ``June 13, 1985, 4:27 PM''."
     
  4. marvin

    marvin Thread Starter MacUser Mitglied

    Beiträge:
    52
    Zustimmungen:
    0
    MacUser seit:
    09.12.2003
    Danke fuer die Nachricht, aber das wollte ich nicht.

    Mir geht es um die Ausgabe des Datums von Gestern auf der bash.


    Gruss
    Sven
     
  5. joey.weber

    joey.weber MacUser Mitglied

    Beiträge:
    1
    Zustimmungen:
    0
    MacUser seit:
    11.09.2006
    Also in der Linux bash geht das so:

    date --date "one day ago"

    Ich denke die Mac Bash ist dem ähnlich.

    Wenn du das ganze noch formatiert haben willst kannst du wie gewohnt einen Formatstring anhängen:

    date --date "one day ago" +%Y-%m-%d
     
  6. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.842
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    Hallo marvin,

    env TZ=CEST+22 date

    bzw. nur das Datum

    env TZ=CEST+22 date "+%d/%m/%y"

    ergibt das Datum von Gestern. Irgendwie verstehe ich aber nicht, wie die 22 Stunden zustande kommen. Eigentlich müssten es doch 24 sein - oder?

    Zu beachten ist, dass das nun für die Sommerzeit gilt.

    Noch nicht das Richtige, aber ich hoffe mal ich schubs Dich in die richtige Richtung...
    So einfach wie unter Linux scheint es nicht zu sein.

    Gruß Andi
     
  7. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Nebenbei mal einige Erklärungen:

    Mit der bash hat das eigentlich nichts zu tun, da 'date' kein "Buitin" Kommando sondern ein eigenständiges Programm ist.

    Dass 'date' unter Linux i.d.R. anders funktioniert liegt daran, dass unter Linux oft GNU Programme installiert sind, die nicht der SUSv3 entsprechen und häufig eine andere Syntax und einen anderen Funktionsumfang haben.

    Code:
    env TZ=+22 date                            410
    Mo Sep 18 17:56:36 UTC 2006
    
    env TZ=CEST+22 date                            411 
    So Sep 17 19:58:09 CEST 2006
    
    env TZ=XYZ+22 date                             412 
    So Sep 17 19:58:38 XYZ 2006
    Nicht, dass ich es verstehen würde, aber so ist es ;).
    Wie bist Du auf das Kommando gekommen? In der Form kannte ich das noch nicht.
     
  8. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Ach so, und hier noch mein Lösungsansatz:
    Code:
    date -r `perl -e 'print time-60*60*24,"\n"'`
    Der funktioniert an allen Tagen, außer den zweien im Jahr, an denen die Sommerzeit umgestellt wird, da an diesen Tagen der Tag nicht 24 sondern 23 bzw. 25 Stunden hat.
     
  9. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.842
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    Hallo maceis,

    man date

    man environ

    Hmm und da dachte ich mir, wenn hier Heute ist, ist wo anders Gestern...
    Dann erinnerte ich mich an GMT+1 usw. und habe CEST-24 versucht, was das Datum von Morgen lieferte. Dann hab ich noch CEST+24 versucht und bemerkt, dass die Zeit nicht stimmt. So kam ich auf die +22

    Wobei ich mir jetzt schon den 2 Stunden Unterschied erklären kann da CET=UTC/GMT+1 ist und CEST eben 2h von UTC/GMT abweicht, wegen der Sommerzeit.

    Eventuell müsste man anstatt CEST, GMT+2 einrichten und dann rechnet das System auch mit den 24h wobei ich es immer noch nicht richtig (+/-)?verstehe...

    Das Sommer-/Winterzeitproblem besteht ja bei Deiner Perl-Lösung auch, falls der Befehl zur Falschen Zeit ausgeführt wird. Eben genau dann, wenn die Zeit umgestellt wird.

    Gruß Andi
     
  10. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Der Vorteil der Perl Lösung besteht darin, dass das Komando immer gleich bleibt und nur an zwei Tagen im Jahr (genau gesagt innerhalb von zwei Stunden im Jahr) das falsche Ergebnis liefert.
    Und selbst das lässt sich lösen. ich wollte es marvin aber nicht vorenthalten, sich selbst an der perfekten Kommandozeile zu versuchen ;).
     
Die Seite wird geladen...

Diese Seite empfehlen