# [csh] "gestern" mit date



## m3000 (12. März 2008)

Hallo, 

wie kann ich per date Daten berechnen? Mein _heute_ ist das: 
	
	
	



```
`date +%Y%m%d`
```
 Wie kann ich davon einen Tag abziehen, also _gestern_ berechnen? 

Dank und Gruss, m3000


----------



## deepthroat (12. März 2008)

Hi.

Hast du schonmal die man-page von date gelesen?

Da steht sowas: 





> "Gestern" ausgeben lassen: date -d@$((`date +%s`-86400)) +%d.%m.%Y



Gruß

PS: Du willst doch nicht wirklich mit der csh arbeiten / programmieren?


----------



## m3000 (12. März 2008)

Danke, aber die man-Seite hatte ich angesehen, und Dein Zitat gibt's da leider nicht. Argument -d ist unbekannt (nur a und u), und wenn ich Dein statement absetze, kommt "Illegal variable name". Im man date steht noch 





> SunOS 5.9           Last change: 12 Dec 2000


 Zu alt? Alternativen?


----------



## deepthroat (12. März 2008)

m3000 hat gesagt.:


> Danke, aber die man-Seite hatte ich angesehen, und Dein Zitat gibt's da leider nicht. Argument -d ist unbekannt (nur a und u), und wenn ich Dein statement absetze, kommt "Illegal variable name". Im man date steht noch  Zu alt? Alternativen?


Oh. Ich bin von einem GNU/Linux System ausgegangen...

Das wird mit den Bordmitteln von Solaris nur ganz schwer möglich sein. Vielleicht sind aber die GNU Tools unter /usr/gnu oder /usr/local/gnu o.ä. installiert?

Du könntest natürlich auch ein Skript schreiben und versuchen den letzten Tag selbst über Regeln zu bestimmen. Aber das wäre nicht trivial...

Gruß


----------



## m3000 (12. März 2008)

ok, danke für den Versuch.


----------



## olqs (12. März 2008)

Ich hätte da nen Vorschlag mit perl.
Ob das bei Solaris per default installiert wird, weiß ich aber auch ned.
Bei unseren Solaris Rechnern ists jedenfalls drauf:

```
perl -e '($a, $b, $c, $day, $month, $year, $d, $e, $f)=localtime(time-86400); $month+=1;$year+=1900; print "$day.$month.$year\n";'
```

Wenn du führende Nullen bei den Tagen und Monaten brauchst geht das so:

```
perl -e '($a, $b, $c, $day, $month, $year, $d, $e, $f)=localtime(time-86400); $month+=1;$year+=1900; $month = $month < 10 ? "0".$month : $month; $day = $day < 10 ? "0".$day : $day; print "$day.$month.$year\n"'
```

Gruß
olqs


----------

