# Zum Datum 30 Tage oder 1 Monat hinzufügen



## Gast (26. Nov 2004)

hallo, für eine Bücherei Software muss ich das heutige Datum um 30 Tage  oder 1 Monat erweitern (Beim Buch ausleihen)

Wie kann ich das tun? ( Datentyp muss Date sein)

Zu einem späteren Zeitpunkt ( über mehrere Tage hinweg) vergleiche ich dieses Datum dann wieder mit einem aktuellen Datum.

Kann das dann mit "getTimeInMillis" funktionieren

vielen dank schonmal

kuensa


----------



## thE_29 (26. Nov 2004)

Naja, könntest so machen 
java.util.Date ist das was ich verwende!

```
Date jetzt = new Date();
    jetzt.setDate(jetzt.getDate()+60);
    SimpleDateFormat fmt = new SimpleDateFormat("dd-MM-yyyy");
    System.out.println(fmt.format(jetzt));
```

Wobe das simpledateformat nur zum testen da ist, ob es mit den Tagen hingehaut hat


----------



## foobar (26. Nov 2004)

```
Calendar now = Calendar.getInstance( );
SimpleDateFormat formatter = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("heute >>" + formatter.format(now.getTime( )));
now.add(Calendar.DAY_OF_YEAR, 30);
```


----------



## thE_29 (26. Nov 2004)

Ist wahrscheinlich die schönere (weil neuere, sun mag Date nicht mehr  - hab aber alles noch mit Date gelernt ) Variante


----------



## kuensa (26. Nov 2004)

seid ihrsicher, dass bei beiden lsg jeweils der datentyp datum ist?


----------



## Grizzly (26. Nov 2004)

Ich würde an Deiner Stelle Calendar bzw. GregorianCalendar benutzen. Dort gibt es schon einige Funktionen, wie Zeit abziehen oder dazuzählen, usw. . Und vor allem funktionieren die.


----------



## Guest (26. Nov 2004)

Hallo, habe jetzt erst mal 2 Daten (mz von Datum) ausgelesen und per substring auseinandergenommen.


```
Date jetzt = new Date(); 
		     jetzt.setDate(jetzt.getDate()); 
		     		     
		     System.out.println( fmt.format(jetzt));
		     
		     String tagj = fmt.format(jetzt).substring(0,2);
		     String monatj= fmt.format(jetzt).substring(3,5);
		     String jahrj = fmt.format(jetzt).substring(6,10);
```

Der Daten typ ist jetzt allerdings String, was ich ja schlecht vergleichen kann.

Oder gibt es noch eine andere möglichkeit, wie ich die zwei Daten miteinander vergleichen kann??


----------



## Gast (26. Nov 2004)

@grizzly:

das habe ich bis auf ein paar codeschnipsel nicht hingekriegt, soweit reichen meine java kenntnisse noch nicht

```
long dt = new GregorianCalendar(year,month,date).getTimeInMillis();
long days = (System.currentTimeMillis() - new GregorianCalendar(year,month,date).getTimeInMillis()) / 86400000;
System.out.println(days+"   "+dt);
long helpdays = days + 30;
System.out.println(helpdays);
long rueckgabe = (System.currentTimeMillis()+ helpdays * 86400000) ;
System.out.println (rueckgabe);
```

soweit war ich schon, nur der rücksprung von "rueckgabe" auf ein Datum fehlt mir noch


----------



## foobar (26. Nov 2004)

Warum verwendest du nicht die Calendar Klasse? Ist doch viel einfacher als mit substring zu arbeiten. Vielleicht ist es so etwas klarer:

```
Calendar now = Calendar.getInstance( );
SimpleDateFormat formatter = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("heute >>" + formatter.format(now.getTime( )));
now.add(Calendar.DAY_OF_YEAR, 30); 
Date d = now.getTime(); // liefert ein Date-Objekt zurueck
```
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html#getTime()


----------



## Gast (26. Nov 2004)

date d ist ja ok, aber das datum ist zu lang, es darf nur inder form:
tt.mm.jjjj ausgegeben werden ( der datentyp muss der glieche bleiben)


----------



## foobar (26. Nov 2004)

> SimpleDateFormat formatter = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");


Was meinst du was diese Zeile bewirkt?
RTFM


----------

