Hallo zusammen, ich habe mir mal ein Beispiel zusammengeschraubt, womit ich die Anzahl vergangener Tage seit Tag X anzeigen lassen kann. OK. - Tag X ist im Beispiel der 03.09.2003 und den koennte man auch in einer Variablen ablegen. echo $((($(date +%s --date $(date +%Y%m%d))-$(date +%s --date 20030903))/86400)) Beispiel Nr.2 (etwas uebersichtlicher): tagx=20020910 heute=$(date +%Y%m%d) echo $((($(date +%s --date $heute)-$(date +%s --date $tagx))/86400)) Nun frage ich die Profis - geht das auch einfacher ? Bevor die Diskussion ueber verschiedene Tageszeiten losgeht: Im obigen Beispiel rechnet meine bash GNU bash, version 2.05b.0(1)-release (i586-suse-linux) immer ausgehend von 00.00:00 Uhr ! Daher sollte das Zwischenergebnis auch immer _ganz_ durch 86400 ( 60*60*24 ) teilbar sein. Sollte es kompatib.-Probs geben, koennte man die Uhrzeit auch jeweils auf 00:00 Uhr festlegen. MfG Th. Moritz -- Geisterfahrer sind oft sehr entgegenkommend!
Thomas Moritz schrieb:
Hallo zusammen, ich habe mir mal ein Beispiel zusammengeschraubt, womit ich die Anzahl vergangener Tage seit Tag X anzeigen lassen kann. OK. - Tag X ist im Beispiel der 03.09.2003 und den koennte man auch in einer Variablen ablegen.
echo $((($(date +%s --date $(date +%Y%m%d))-$(date +%s --date 20030903))/86400))
Beispiel Nr.2 (etwas uebersichtlicher):
tagx=20020910 heute=$(date +%Y%m%d) echo $((($(date +%s --date $heute)-$(date +%s --date $tagx))/86400))
Nun frage ich die Profis - geht das auch einfacher ?
Bevor die Diskussion ueber verschiedene Tageszeiten losgeht: Im obigen Beispiel rechnet meine bash GNU bash, version 2.05b.0(1)-release (i586-suse-linux) immer ausgehend von 00.00:00 Uhr ! Daher sollte das Zwischenergebnis auch immer _ganz_ durch 86400 ( 60*60*24 ) teilbar sein. Sollte es kompatib.-Probs geben, koennte man die Uhrzeit auch jeweils auf 00:00 Uhr festlegen.
MfG Th. Moritz
Auf die Schnelle: %j gibt bei date den "day of year (1-366)" aus... -- // Dierk Froehling // aycan Digitalsysteme GmbH // Innere Aumuehlstr. 5 // 97076 Wuerzburg // Germany // phone: +49 (0)931 2 70 40 9-0 // fax: +49 (0)931 2 70 40 9-1 // http://www.aycan.de
Am Mittwoch, 10. September 2003 13:14 schrieb dfroehling:
Thomas Moritz schrieb:
Hallo zusammen, ich habe mir mal ein Beispiel zusammengeschraubt, womit ich die Anzahl vergangener Tage seit Tag X anzeigen lassen kann. OK. - Tag X ist im Beispiel der 03.09.2003 und den koennte man auch in einer Variablen ablegen.
echo $((($(date +%s --date $(date +%Y%m%d))-$(date +%s --date 20030903))/86400))
Beispiel Nr.2 (etwas uebersichtlicher):
tagx=20020910 heute=$(date +%Y%m%d) echo $((($(date +%s --date $heute)-$(date +%s --date $tagx))/86400))
Nun frage ich die Profis - geht das auch einfacher ?
Auf die Schnelle: %j gibt bei date den "day of year (1-366)" aus...
An dem Punkt hatte ich angefangen, doch gibt es zu viel "wenn und aber"! -Rechnen ueber mehrere Jahre -wann war/ist ein Schaltjahr -usw. Mein obiger Weg scheint dann doch effektiver zu sein. Zumindest, wenn als Ergebnis immer die Anzahl Tage stehen soll. MfG Th. Moritz -- Geisterfahrer sind oft sehr entgegenkommend!
On Wed, 2003-09-10 at 12:55, Thomas Moritz wrote:
Hallo zusammen, ich habe mir mal ein Beispiel zusammengeschraubt, womit ich die Anzahl vergangener Tage seit Tag X anzeigen lassen kann.
Hmmm, ich kenn mich in bashprogrammierung nicht aus. Da ich aber sehr viel in Perl programmiere fällt mir natürlich das grandiose Modul Date::Calc ein. Das hat direkt eine entsprechende Funktion. Wenn es also auch perl sein darf, würde ich Dir vorschlagen die entsprechende Doku zu dem Modul anzusehen. HTH Volker
participants (3)
-
dfroehling
-
Thomas Moritz
-
Volker Kroll