Einen Tag zurück rechnen

Post Reply
Message
Author
Christian

Einen Tag zurück rechnen

#1 Post by Christian »

Hallo Ihr,

grosses Problem, mit date kann ich mir ja Datum, Tag, etc
aurechnen lassen. Wie kann ich mir den Tag davor ausrechnen
lassen? Tag-1, aber was ist wenn es der 1. ist?

Bitte um Hilfe

Danke im Vorraus


Gruss Christian

Jochen

Re: Einen Tag zurück rechnen

#2 Post by Jochen »

Das Tolle an diesem Forum ist, dass man selbst als Antwortender immer noch lernt. Die Lösung für Dein Problem war mir bis vor kurzem selber unbekannt. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">date -d yesterday</font><hr></pre></blockquote>Formatstrings kann man natürlich auf mit angeben. Wahrscheinlich ist diese Lösung allerdings nicht sehr portabel; es scheint eine GNU-date-Erweiterung zu sein.

Jochen

Christian

Re: Einen Tag zurück rechnen

#3 Post by Christian »

Hallo Jochen,

genau das ist ads Problem. Es geht nur mit GNU date.
Brauche das aber ohne Neuinstallationen unter Sun
das Yesterday habe ich selbst gefunden.

Trotzdem Danke

Gruss Christian

Jochen

Re: Einen Tag zurück rechnen

#4 Post by Jochen »

Nu je, das wäer ja mal eine interessante Information für's erste Posting gewesen, hm? Meine Glaskugel ist nämlich ziemlich trübe heute... <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Ist perl auf der Sun installiert? Dann kannst Du im Perl-Faq eine Methode dazu nachlesen, zu finden mittels:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">perldoc -q yesterday</font><hr></pre></blockquote>(Aber nicht als root.) Alles andere müsste man scheinbar doch in Handarbeit basteln...

Jochen

rattengift

Re: Einen Tag zurück rechnen

#5 Post by rattengift »

> mit date kann ich mir ja Datum, Tag, etc aurechnen lassen. Wie kann ich mir den Tag davor ausrechnen lassen? Tag-1, aber was ist wenn es der 1. ist?

gibt es unter solaris (welche shell ist das denn, korn?) auch arrays wie in bash? damit liesse sich das recht einfach formulieren. in bash kann man schreiben:
<font face="Courier New">TAGE=(31 28 31 30...etc); printf "Januar hat ${TAGE[0]} Tage"</font><!--fixed-->, und der rest wäre damit recht einfach zu machen (pseudocode):<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
# y, m, d = aus date holen (+%Y/m/d).
tage=(31 28 ...)

if (d > 1)
yg=y
mg=m
dg=d-1
else # tag 1
if (m > 1)
yg=y
mg=m-1
dg=tage [mg-1]
else # tag 1, monat 1
yg=y-1
mg=12
dg=tage [mg-1] # == 31
fi
fi</font><hr></pre></blockquote>das eigentliche problem (und hier noch nicht berücksichtigt) sind schaltjahre. dafür gibts aber einfache algorithmen im internet. aber das alles in shell zu programmieren ist trotzdem keine schöne sache. wie jochen sagte, ist perl wohl die bessere wahl.

Post Reply