# Date von heute mit Uhrzeit erzeugen



## Gorco (15. Dez 2009)

Hallo,

ich muss aus einer Tabelle Datensätze von heute auslesen. Diese haben aber einen Timestamp so das ich nicht einfach nur nach dem heutigen Datum abfragen kann. Hierzu muss ich einen Von-Bis-Bereich angeben: 15.12.2009 00:00:00.000 bis 15.12.2009 23:59:59.999. Jetzt zu meiner Frage, wie erstelle ich auf dem kürzesten Weg ein java.util.Date von heute mit einer fest vorgegebenen Uhrzeit?

Danke im Vorraus!

Gruß
Gorco


----------



## Guybrush Threepwood (15. Dez 2009)

Zum Beispiel zum Anzeigen geht es folgendermaßen:

```
String datum = DateFormat.getDateInstance(
								DateFormat.LONG, Locale.GERMAN).format(
								System.currentTimeMillis());
```

Oder als Date-Object schlicht:

```
Data date = new Date(System.currentTimeMillis());
```


----------



## bygones (15. Dez 2009)

wenns ein bestimmtes datum zu einer bestimmten Uhrzeit sein muss wuerde ich mir ueber Calendar das entsprechende Datum erzeugen und dann kannst du dies in ein Date umwandeln


----------



## SlaterB (15. Dez 2009)

Guybrush Threepwood hat gesagt.:


> Oder als Date-Object schlicht:
> 
> ```
> Data date = new Date(System.currentTimeMillis());
> ```



Date date = new Date();


----------



## Gorco (15. Dez 2009)

Hallo,

das mit dem Calendar-Objekt ist ein guter Typ. Hab mir ne Methode gebastelt an welche ich feste Werte übergeben kann. Wenn null übergeben wird, wird der aktuelle Wert von heute angenommen. Danke Euch erstmal!


```
public static final Date dateDefault(Integer Year, Integer Month, Integer Day, Integer Hour, Integer Minute, Integer Second) {

Calendar calendar = Calendar.getInstance();

if (Year != null) {

calendar.set(Calendar.YEAR, Year);

}

if (Month != null) {

calendar.set(Calendar.MONTH, Month);

}

if (Day != null) {

calendar.set(Calendar.DATE, Day);

}

if (Hour != null) {

calendar.set(Calendar.HOUR_OF_DAY, Hour);

}

if (Minute != null) {

calendar.set(Calendar.MINUTE, Minute);

}

if (Second != null) {

calendar.set(Calendar.SECOND, Second);

}

calendar.set(Calendar.MILLISECOND, 0);
return new Date(calendar.getTime().getTime());

}
```


----------



## bygones (15. Dez 2009)

warum uebergibst du Integer und nicht einfach int ?

wenn die werte NULL sein koennen wuerde ich mir ueberlegen eher eine NPE zu riskieren, ansonsten erstellst du ein Datum was vll falsch ist (zb wenn Monat null ist wird einfach der aktuelle genommen) - oder ist das so gewollt.

die rueckgabe kannst du auch einfach ueber calender.getTime() dann machen


----------



## Gorco (15. Dez 2009)

Hallo,

also der Aufruf von:


```
Date date = dateDefault(null, null, null, 23, 59, 59);
```

erzeugt den 15.12.2009 23:59:59. Dort wo null (nicht 0) angegeben wird, wird der aktuelle Wert verwendet.


----------



## bygones (15. Dez 2009)

dann wuerde ich eine Methode machen:

```
private static void setValue(Calendar calendar, int field, Integer value) {
        if (value != null) {
            calendar.set(field, value);
        }
    }
```
das verringert die komplexitaet der eigentlichen Methode enorm und somit ihr Verstaendnis

```
Calendar calendar = Calendar.getInstance();
setValue(calendar, Calendar.YEAR, Year);
setValue(calendar, Calendar.MONTH, Month);
//  andere felder
```

als nachtrag noch: Variablen IMMER camelCase mit kleinem Buchstaben am anfang... als [c]year[/c], [c]month[/c] etc


----------



## Gorco (15. Dez 2009)

Guter Tipp! Werde ich noch einbauen!

Danke & Gruß
Gorco


----------



## Guybrush Threepwood (15. Dez 2009)

SlaterB hat gesagt.:


> Date date = new Date();


----------

