2010-09-07 22 views
7

que he estado tratando de encontrar la respuesta a esto por un tiempo y hoy en día sólo hay tanta información contradictoria ....Java sencilla Marca de tiempo a la conversión Fecha

Lo que me gustaría hacer es obtener una corriente Unix timestamp en android, y luego convertirlo a un formato que me permite obtenerHours() y getMinutes().

actualmente estoy haciendo esto:

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

Pero no me está dando un valor correcto para la hora o minuto (está volviendo 03:38 para el momento actual de la costa este de 13:33).

Respuesta

10

Esto funciona:

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

Haciendo esto, devuelve un tiempo de 07:00. ¿Es solo que el tiempo del sistema de mi dispositivo está estropeado? –

+1

OK, lo tengo. Estaba almacenando la marca de tiempo en un int, cuando realmente tiene que ser un Long. Gracias chicos –

+6

date.getHours, date.getMinutes, etc. están en desuso en Android. Usa la respuesta de @ mbaird –

8

Simplemente use la clase 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); 

También tenga en cuenta que el emulador de Android veces volver en GMT para la hora actual. Aconsejo probar este tipo de código en un dispositivo real.

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

aquí se debe utilizar largo en lugar de int.

0

Usar T ime clase de Google es el mejor para este tipo de trabajo, especialmente tiene un buen rendimiento, no como el Calendario.

Cuestiones relacionadas