2010-09-07 11 views
7

Próbowałem znaleźć odpowiedź na to za jakiś czas dzisiaj i jest tak wiele sprzecznych informacji ....Java prosty Datownik do dnia konwersji

Co chciałbym zrobić, to prąd Uniksowy znacznik czasu w systemie Android, a następnie przekonwertuj go do formatu, który pozwala mi uzyskać getHours() i getMinutes().

Jestem obecnie to robi:

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

Ale to nie daje mi poprawną wartość dla godzinę lub minutę (nie jest to powrót 03:38 do chwili obecnej East-coast 13:33).

Odpowiedz

10

to działa:

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

Powoduje to powrót o godzinie 07:00. Czy to po prostu czas na urządzenie mojego komputera? –

+1

OK, rozumiem. Przechowywałam znacznik czasu w int, kiedy naprawdę musi to być Long. Dzięki chłopaki –

+6

date.getHours, date.getMinutes itp. Są przestarzałe w systemie Android. Użyj odpowiedzi @ mbaird –

8

Wystarczy użyć klasy Java Calendar.

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

Należy również pamiętać, że emulator Androida zwróci czas w GMT na bieżący czas. Radzę testować ten typ kodu na prawdziwym urządzeniu.

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

tutaj należy użyć długo zamiast int.

0

Zastosowanie T forma ime klasa Google jest najlepsze dla tego rodzaju pracy specjalnie ma dobre osiągi nie jak kalendarz.