# Date() ->das Datum von gestern ausgeben



## chilly (12. Mai 2010)

Hallo liebe Community,

ich habe folgende Frage:
Wie kann ich das Datum von gestern herausfinden?

Das Datum von heute bzw. jetzt bekomme ich relativ leicht über folgenden Code


```
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 Date currTime = new Date();
 String heute = formatter.format(currTime);
```

Danke für eure Antworten 

lg
Chilly


----------



## nrg (12. Mai 2010)

```
public static void main( String[] args ) {
		GregorianCalendar cal = new GregorianCalendar();
		SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
		cal.add( Calendar.DATE, -1 );
		System.out.println( sdf.format( cal.getTime() ) );
```

Date ist deprecated


----------



## Noctarius (12. Mai 2010)

```
String gestern = formatter.format(new Date(currTime.getTime() - 86399000));
```

Grad so ins blaue geraten 

Einfach vom aktuellen Datum 23 Stunden, 59 Minuten und 59 Sekunden abziehen 

PS: Die Calendar Version geht auch aber Date allgemein ist nicht deprecated, nur die meisten Methoden


----------



## chilly (12. Mai 2010)

Vielen Dank für die Info


----------



## C_A (9. Jul 2010)

nrg hat gesagt.:


> ```
> public static void main( String[] args ) {
> GregorianCalendar cal = new GregorianCalendar();
> SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
> ...



Mal blöd gefragt ... nur fürs Verständnis: wofür braucht man eigentlich noch Date? Ich kann doch alles, was Date anbietet auch über Calender regeln.


----------



## nrg (9. Jul 2010)

deshalb ist ja date auch überwiegend deprecated . das was der TO oder Noctarius hier gemacht haben könnte man z.b. noch mit Date machen. Natürlich geht das genauso gut auch mit Calendar..

Warum jetzt nicht komplett Date deprecated ist kann ich auch nur vermuten. Man holt sich halt in vielen Programmiersprachen mit der Klasse Date und den stdkonstruktor die jetzige Zeit. Bei einer Millisekundenrechnung kann man ja nicht viel falsch machen, also kann das auch noch bleiben. Den Rest hat Sun gegen die Wand gefahren und dadurch das Java abwärstkompatibel sein muss, kann man die Date auch nicht einfach überarbeiten.
Deshalb wurde halt der Mist deprecated und neuer Mist nahm seinen Platz ein :autsch:. Aber wie gesagt, ist nur ne Vermutung (Date nicht deprecated war vor meiner Zeit ). 

Anscheinend gabs mit Date auch in irgendwelchen Fällen Probleme:


> This method is deprecated and should not be used because SQL Date values do not have a time component.


----------



## C_A (9. Jul 2010)

Ok, danke für Dein Posting! 

Ich hab in der Zwischenzeit ein wenig recherchiert. Nochmal ganz blöd gefragt: ich habe einen Spinner, und den für Datumseingaben einsetzen möchte. Dann code ich, bzw. lass von NetBeans coden: 

        spnDate.setModel(new javax.swing.SpinnerDateModel(new java.util.Date(), null, new java.util.Date(), java.util.Calendar.DAY_OF_MONTH));

Wenn ich das Datum auslesen möchte, frage ich ab: 

        Date d = (Date)spnDate.getValue();
        System.out.println(d);

Umgekehrt, wenn ich versuche, den Wert in eine Calendar-Variable zu packen, bekomme ich eine Fehlermeldung: 
// so nicht:         Calendar cal = (Calendar) spnDate.getValue();

Wie würdet Ihr das Datum aus dem spnDate auslesen? Lässt sich eine Lösung auch ohne Einsatz von Date finden?


----------



## nrg (9. Jul 2010)

muss ich passen. habs mir jetzt 3x durchgelesen und weiss immer noch nicht ganz was du meinst


----------



## C_A (9. Jul 2010)

nrg hat gesagt.:


> muss ich passen. habs mir jetzt 3x durchgelesen und weiss immer noch nicht ganz was du meinst



;-) 

Na gut, ich versuche mal, meine Frage etwas deutlicher zu formulieren ... Ich lege einen JSpinner an, mit dem ich vom Benutzer ein Datum abfragen möchte. Dafür weise ich dem JSpinner das Model - s. mein voriges Posting - zu. 

Der Anwender klickt jetzt einen Button, und ich möchte das Datum auslesen. Das mache ich mit JSpinner.getValue(). 

Das Object, das mir zurückgegeben wird, kann ich problemlos in ein Date casten. Ich habe testweise versucht, das Object in einen Calendar-Typ zu casten, was  eine Fehlermeldung hervorgerufen hat. Also caste ich in ein Date-Typ. 

Was ich jetzt wissen möchte, ist, wie Ihr ein Datum über die GUI erfragt ... ohne jetzt große Komponenten zu verwenden. Ist der Cast, wie ich ihn durchführe, Pillenpanne oder wie würdet Ihr vorgehen? 

Kann ich das Datum, das mir JSpinner.getValue() zurückliefert, gleich in ein Calendar-Objekt auslesen?


----------



## Gast2 (9. Jul 2010)

Ich verstehe die Frage auch nicht wirklich.
Wenn du ein SpinnerDateModel nimmst dann bekommst du halt nen Date zurück:


```
Date value = (Date)spinner.getValue();
```

Einfach auf Calendar kannst du das natürlich nicht casten, weils nunmal kein Calendar objekt ist 
Wenn du das ganze dennoch in nem Calendar haben willst erstellst du dir einen Calendar und rufst setTime(...); auf ???:L

EDIT:


> Kann ich das Datum, das mir JSpinner.getValue() zurückliefert, gleich in ein Calendar-Objekt auslesen?




```
Date value = (Date)s1.getValue();
        Calendar c = new GregorianCalendar();
        c.setTime(value);
```


----------



## nrg (9. Jul 2010)

ah ok jetzt. bin nicht soo bewandert in der gui programmierung.. also erstmal frag ich mich, warum du das SpinnerDateModel so umständlich instanziierst. Standardkonstuktor macht imho genau das Selbe. und zweitens verstehe ich immernoch dein Problem nicht . kannst es doch jederzeit in nen Calendar packen, wennste willst. Kommt halt darauf an, was du weiter damit machen willst.


----------



## C_A (9. Jul 2010)

nrg hat gesagt.:


> ah ok jetzt. bin nicht soo bewandert in der gui programmierung.. also erstmal frag ich mich, warum du das SpinnerDateModel so umständlich instanziierst. Standardkonstuktor macht imho genau das Selbe. und zweitens verstehe ich immernoch dein Problem nicht . kannst es doch jederzeit in nen Calendar packen, wennste willst. Kommt halt darauf an, was du weiter damit machen willst.



Lass gut sein jetzt - glaube, ich hab mal wieder zu kompliziert gedacht ;-)


----------

