# Datum und Stunde als String ausgeben



## MrWhoopy (2. Nov 2011)

Hallihallo,

und zwar arbeite ich gerade an nem kleinen Projekt in dem es darum geht Log-Daten von einem Server zu laden. Pro Stunde wird eine Log-Datei erstellt die ich holen muss.
Ich habe einen festen Pfad angegeben z.B. http//....../Log_Datei.
An diesen Pfad muss ich jetzt das Datum und die letzte Stunde hängen, damit nur die aktuelle Datei geholt wird, sprich:

http//...../Log_Datei-2011-11-02-15 (für: 02.11.2011 von 15-16 Uhr)

Das "-2011-11-02-15" muss also noch hinten drangehängt werden.

Meine Probleme:

Wie hol ich mir das aktuelle Datum und wie hol ich mir NUR die eine Stunde die ich benötige.
Die brauch ich beide als String, damit ich die dann an den Pfad hängen kann (aber wie mach ich das?).

Datum könnt ich mir mal so holen aber kA ob mir das in der Form was bringt: 

```
String today = new java.sql.Date(new Date().getTime()).toString();
```

Ihr seht ich brauch echt Hilfe^^ 

Vielen Dank schonmal 

Lg


----------



## HelgeW (2. Nov 2011)

schau mal beim SimpleDateFormat vorbei 

so nach dem Motto:
String date = (new SimpleDateFormat("yy-MM-dd-HH").format(new java.util.Date()))

Wegen der genauen Formatierung schaue noch einmal nach...


----------



## faetzminator (2. Nov 2011)

[c]"yyyy-MM-dd-HH"[/c] wär korrekt


----------



## MrWhoopy (2. Nov 2011)

Ahhh dankeschön 

das sieht schonmal gut aus^^ Das einzige Problem das ich jetzt halt hab ist, dass die aktuelle Stunde (also für 15:31 Uhr) die 15 ausgegeben wird aber ich brauch die 14, also immer eine Stunde früher. Kann ich das irgendwie abziehen? Und wie kann ich diesen String dann an einen anderen String hängen? 

Okay war doch nicht das einzige Problem^^

Lg


----------



## MrWhoopy (2. Nov 2011)

Naja gut das anhängen war einfach^^ einfach PLUS machen 

Dann hab ich nurnoch das Stundenproblem.


----------



## HelgeW (2. Nov 2011)

Dann nimmst Du einen weiteren Formatter nur für die Stunde. Diesen Wert läßt Du dir von Integer.parseInt() als int auswerten. Machst dann -1 und danach das ganze per String.format() wieder als zweistelligen ZeitCode...

Also ca so:
String stunde = new StringFormatter(...)
int std = Integer.parseInt(stunde)-1;
String neueStunde=String.format("%2d", std);

Viel Spass


----------



## timbeau (2. Nov 2011)

Date d = new Date();

		Calendar c = Calendar.getInstance();
		c.setTime(d);
		c.roll(Calendar.HOUR,  -1);

		d = c.getTime();
		String date = new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(d);
		System.out.println(date);


----------



## MrWhoopy (2. Nov 2011)

Ahhhh super dankeschön  Hat wunderbar geklappt!


----------



## MrWhoopy (7. Nov 2011)

Jetzt hät ich nurnoch eine Frage:

Was ist wenn ich das Datum von gestern haben will? Da kann ich ja vom String nicht einfach 86399000 abziehen, ist ja kein INT.

Aber ich brauchs halt danach wieder als String.

Bin da irgendwie zu doof dafür glaub^^

Schonmal danke


----------



## SlaterB (7. Nov 2011)

erst im Calendar was tun, dann den String formatieren?


----------



## HelgeW (7. Nov 2011)

Schau Dir die Antwort von timbeau mal genauer an.
Dort steht eine Zeile, wo der Kalender manipuliert wird. Dieses kannst Du auch mit Tagen, Minuten etc. machen.

Viel Spass


----------



## MrWhoopy (7. Nov 2011)

Ich habs halt mit der Stunde nach deinem prinzip gemacht, also:

String stunde = new StringFormatter(...)
int std = Integer.parseInt(stunde)-1;
String neueStunde=String.format("%2d", std);

und hab gehofft, dass ich das so ähnlich auch mit dem Datum machen kann. 
Gibts da Möglichkeiten oder muss ich mit dem Calendar arbeiten?

Lg


----------



## SlaterB (7. Nov 2011)

ein Calendar ist in Java genau für Datumumrechnungen gedacht und du fragst nach Alternativen?


----------



## MrWhoopy (7. Nov 2011)

Mein Code sieht jetzt so aus:


```
Calendar cal = Calendar.getInstance();
		   DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

		   cal.add(Calendar.DATE, -1);
		   System.out.println("Yesterday's date was "+dateFormat.format(cal.getTime())); 
		   
		   String date = new SimpleDateFormat("yyyy-MM-DD").format(cal.getTime());
		   
		   System.out.println(date);
```

nur spuckt er mir jetzt "2011-11-310" aus?!?! Ich brauchs halt auf jedenfall als String...


----------



## SlaterB (7. Nov 2011)

die Bedeutung eines jeden Zeichens, ob y, M oder D oder auch d, du verwendest ja beides, kann man nachschlagen,
310 ist völlig korrekt für D, nehme ich stark an, heute ist 311

SimpleDateFormat (Java 2 Platform SE 5.0)


----------



## MrWhoopy (7. Nov 2011)

Ahhhh ich verstehe!!!^^ Vielen vielen dank!


----------

