# Mit Datum rechnen



## jonasXDD (2. Dez 2012)

Hallo,
ich versuche greden mit Datum zu rechnen:

Und zwar will ich das heutige Datum (Tag im Jahr) nehmen und da dann eine bestimmte Anzahl von Tagen draufrechnen.


```
SimpleDateFormat datum = new SimpleDateFormat("dd.MM.yyyy");
		SimpleDateFormat tagimjahr = new SimpleDateFormat("D");
		SimpleDateFormat jahr = new SimpleDateFormat("yyyy");
		Date currentDate = new Date();
```

Wie kann ich jetzt mit den einzelnen Werten '+' und '-' rechnen?
z.B. tagimjahr + 90(Tage) = ergebnis

Kann mir einer erklären wie ich das machen muss? 

MfG jonasXDD (Anfänger)


----------



## L-ectron-X (2. Dez 2012)

Das geht mit [JAPI]GregorianCalendar[/JAPI] und der roll()-Methode am einfachsten.


----------



## jonasXDD (2. Dez 2012)

Kann man das nicht einfach so ausrechnen? mit den Werten, die ich schon habe?


----------



## Volvagia (2. Dez 2012)

Über getTime() einer Date-Instance kannst du dir den Stamp holen und damit rechnen.
Allerdings sind Datumsrechnungen mit den ganzen Regeln recht kompliziert.

Außerdem hat Java 7 angeblich eine komplett überarbeitete Date-API bekommen, ich hab sie mir aber noch nicht angesehen.


----------



## jonasXDD (2. Dez 2012)

Reicht es nicht, wenn ich das 'datum', 'tagimjahr' und 'jahr' in z.b. a, b und c packe? Wenn ja wie mach ich das?

```
SimpleDateFormat datum = new SimpleDateFormat("dd.MM.yyyy");
		SimpleDateFormat tagimjahr = new SimpleDateFormat("D");
		SimpleDateFormat jahr = new SimpleDateFormat("yyyy");
		Date currentDate = new Date();
```


----------



## L-ectron-X (2. Dez 2012)

Du kannst dir die Millisekunden der aktuellen Zeit (vom 1.1.1970 bis jetzt) ausgeben lassen.
Dann errechnest du die Millisekunden, die eine bestimmte Anzahl von Tagen haben und addierst die Millisekunden dann zur aktuellen Zeit (in Millisekunden).
Das Ergebnis kannst du dir mit der passenden Klasse/Methode bspw. SimpleDateFormat wieder in dein gesuchtes String-Objekt umformen lassen.


----------



## mla.rue (3. Dez 2012)

du kannst dein Date auch an einen Calendar übergeben, dann mit deinen Werten rechnen (L-ectron-X sagte wie in erster Antwort), und das Ergebnis wieder ans sdf übergeben.  Aber warum einfach, wenns auch kompliziert geht.


----------



## SlaterB (3. Dez 2012)

Vorsicht bei Sommer/ Winterzeit, 0:00 an Tag 1 + 90 Tage in Millisekunden könnte nicht 0:00 am gewünschten Tag sein sondern 23:00 am Vortag,
wenn 'abgerundet' wird, im Zweifel immer noch z.B. 12 Stunden drauf addieren


----------



## jonasXDD (3. Dez 2012)

Die Zeit ist mir egal, ich brauche nur das Datum. Aber wie bekomme ich dieses Datum was abrufen in eine Variable oder so, mit der ich dann rechenen kann?

Bin totaler Anfänger.

MfG


----------



## SlaterB (3. Dez 2012)

umso mehr ist Calendar das, wonach du dich richten solltest,
suche danach im Internet, evtl. mit Zusätzen wie 'Tage addieren' und alles sollte sich bestens finden,

für Date evtl. auch, aber mehr Hürden


----------



## Ullenboom (3. Dez 2012)

Siehe auch Galileo Computing :: Java ist auch eine Insel – 15.6 Calendar und GregorianCalendar.


----------



## Meno Hochschild (5. Dez 2012)

L-ectron-X hat gesagt.:


> Das geht mit [JAPI]GregorianCalendar[/JAPI] und der roll()-Methode am einfachsten.



Gemeint war wohl add(), nicht roll() ;-)




Volvagia hat gesagt.:


> Außerdem hat Java 7 angeblich eine komplett überarbeitete Date-API bekommen, ich hab sie mir aber noch nicht angesehen.



Nein, Java 7 hat kein überarbeitetes Date-API (nur geringfügige Erweiterungen in GregorianCalendar). Stattdessen gibt es den JSR 310, der ein völlig neues API für Java 8 vorbereitet und jetzt wohl auf der Ziellinie zu sein scheint. Hier ein Blick auf ein API, das nahe am finalen Stand sein könnte (ich drücke mich bewußt vorsichtig aus). Mit diesem neuen API sind Additionen und Dauerberechnungen viel besser als mit dem alten java.util.Calendar bzw. j.u.Date (aber nicht perfekt!!!).

@Blog: Zeit für Java


----------

