2010-09-07 14 views
7

Ich habe versucht, die Antwort auf diese für eine Weile heute und es gibt nur so viel widersprüchliche Informationen ....Java einfache Timestamp to Date Umwandlung

zu finden Was ich möchte, ist zu tun, einen Strom bekommen Unix-Zeitstempel in Android, und wandeln Sie es dann in ein Format um, das mir getHours() und getMinutes() erlaubt.

mir dies derzeit tun:

int time = (int) (System.currentTimeMillis()); 
Timestamp ts = new Timestamp(time); 
mHour = ts.getHours(); 
mMinute = ts.getMinutes(); 

Aber es ist nicht mir einen richtigen Wert für Stunden oder Minuten zu geben (es ist 03.38 Uhr für die aktuelle Ost-Küste der Zeit von 13.33 Uhr Rückkehr).

Antwort

10

Dies funktioniert:

final Calendar cal = Calendar.getInstance(); 
cal.setTimeInMillis(System.currentTimeMillis()); 
Date date = cal.getTime(); 
mHour = date.getHours(); 
mMinute = date.getMinutes(); 
+0

Dies führt zu einer Zeit von 07:00 Uhr. Ist es nur, dass die Systemzeit meines Geräts verschraubt ist? –

+1

OK, verstanden. Ich habe den Zeitstempel in einem int gespeichert, wenn es wirklich ein Long sein muss. Danke Jungs –

+6

date.getHours, date.getMinutes, etc .. sind in Android veraltet. Benutze @ mbairds Antwort –

8

Verwenden Sie einfach die Java Calendar Klasse.

Calendar c = new GregorianCalendar(); // This creates a Calendar instance with the current time 
mHour = c.get(Calendar.HOUR); 
mMinute = c.get(Calendar.MINUTE); 

Beachten Sie auch, dass Ihr Android-Emulator Zeiten in GMT für die aktuelle Zeit zurückgibt. Ich empfehle, diese Art von Code auf einem echten Gerät zu testen.

2
int time = (int) (System.currentTimeMillis()); 

hier sollten Sie lange statt int verwenden.

0

Verwenden Sie T ime Klassenform Google es ist das beste für diese Art von Job specialy es hat gute Leistung nicht wie Kalender.