# currentTimeMillis Uhrzeit



## Duesenjet123 (18. Nov 2012)

Ahoi,
ich bin auf dem ganzen Gebiet hier noch nen ziemlicher Neuling und probiere nun schon mehrere Stunden aber es will einfach nicht funktionieren. Google hilft mir da leider auch nicht weiter.

Zum eigentlichen Problem: 
Ich soll via currentTimeMillis die aktuelle Uhrzeit st:min sek ausgeben (UTC, es soll ja überhaupt erstmal funktionieren) ohne dabei weitere Methoden der Java-API zu verwenden.

Kann mich vielleicht irgendwer auf den richtigen Weg führen? 

Vielen Dank schonmal im Voraus!


----------



## Kevin94 (18. Nov 2012)

currentTimeMillis gibt dir die Anzahl an Millisekunden zurück, die seit dem 1.1.1970 0:00 Uhr vergangen sind. Um auf die Uhrzeit zu kommen, musst du diesen Wert erst in die entsprechende Einheit(Stunden,Minuten,Sekunden) umrechnen und dann den Rest zur Umrechnungszahl auf die nächsthöhere Einheit bilden (also Tage,Stunden,Minuten), am einfachsten mit Modulo. Als Beispiel für die Sekunden:

```
long time=System.currentTimeMillis();
long seks=time/1000;//1s==1000ms
int seksInMinute=(int)(seks%60);//1min==60s
```

Und dann entsprechen formatieren und ausgeben.


----------



## Duesenjet123 (18. Nov 2012)

Super, das hat mir schonmal sehr geholfen! Danke!
Eine Kleinigkeit fehlt mir noch, wie bekomme ich es denn hin, dass er z.B. 08 für 8 ausgibt?


----------



## Kevin94 (18. Nov 2012)

Ist ganz einfach:

```
int x=8;
if(x<10) System.out.print("0");
System.out.print(x);
```

Bestimmt nicht ganz sauber, geht mit System.out.printf auch besser zu realisieren, die Formatierungsstrings kann ich aber auch nicht auswendig.


----------



## Duesenjet123 (18. Nov 2012)

Danke für deine Hilfe! Ein Problem hab ich aber leider immer noch.

Ich versuche (via Scanner), dass wenn ich z.B. java Zeit x (UTC, MEZ, etc.) in die Console eingebe, dass er dann direkt nur diese ausgibt. Leider bekomm ich da aber immer nur Fehler.


----------



## Kevin94 (18. Nov 2012)

Was soll er bitte ausgeben und wieso Scanner? Wenn ich diese kryptischen Satz richtig interpretiere, gibst du beim Aufruf den Namen einer Zeitzone mit. Dieser String befindet sich dann aber im Array, das der main-Methode übergeben wird, mit einem Scanner kommt man da nicht ran.


----------



## pappawinni (18. Nov 2012)

Also irgendwie kommt mir das bekannt vor..
http://www.java-forum.org/java-basi...arameter-keinen-wert-eingeben.html#post960451


----------



## Spacerat (18. Nov 2012)

Also wenn die Werte für Stunde, Minute und Sekunde erst mal berechnet sind, hilft evtl. [c]String.format("%02d:%02d:%02d", std, min, sek)[/c] weiter.


----------



## pappawinni (18. Nov 2012)

Also dann halt mal alles am Stück, damit alle in der Klasse auch das Gleiche raus bringen.
Wo kommen wir denn hin, wenn sich da jeder selbst was überlegt?


```
public class Uhrzeit {
	public static void main(String[] args) {
		int z = args.length == 0 ? 0 : Integer.parseInt(args[0]);
		long t = java.lang.System.currentTimeMillis();
		long sek = (t / 1000) % 60; 
		long min = (t / 60000) % 60; 
		long std = ((t / 3600000) +z) % 24;

		switch (z) {
		    case 0: 
			System.out.printf("Es ist jetzt %02d:%02d Uhr und %02d Sekunden (UTC).%n",std,min,sek); 
			break;

			case 1: 
			System.out.printf("Es ist jetzt %02d:%02d Uhr und %02d Sekunden (MEZ).%n",std,min,sek); 
			break;

			case 2: 
			System.out.printf("Es ist jetzt %02d:%02d Uhr und %02d Sekunden (MESZ).%n",std,min,sek); 
			break;

			default:
			System.out.println("Ungueltige Eingabe. Waehlen sie zwischen 0,1 und 2!");
		} 
	}
}
```


----------

