2011-07-22 31 views
35

Tengo que una aplicación de Android en la que necesito convertir la fecha actual a la cantidad de segundos pasados ​​desde 1970.cómo obtener el número de segundos transcurridos desde 1970 para un valor de fecha?

Lo que estoy haciendo actualmente es esto.

Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT")); 
cal.set(currentDate.get(Calendar.YEAR), month, currentDate.get(Calendar.DAY_OF_MONTH), 0, 0, 0); 
long timesince1970 = cal.getTime().getTime(); 

Otro problema es que mi aplicación debe ejecutarse en Alemania. De ahí la necesidad de convertir el tiempo a su zona horaria y luego convertirlo a la cantidad de segundos desde 1970.

Lo anterior no me da resultados correctos.

Respuesta

93

System.currentTimeMillis() le da la cantidad de milisegundos desde la época de Unix (1 de enero de 1970 00:00:00 UTC).

Dividirlo por 1000 para obtener la cantidad de segundos.

+0

Dado que proviene de 'System' do' currentTimeMillis() '¿varía si un usuario tiene la fecha modificada? –

+2

@CliffBurton: Sí, lo hace. Los teléfonos Android generalmente están configurados para sincronizar automáticamente su tiempo, pero la fecha de regreso puede ser incorrecta. Si necesita tiempo para ser exacto, generalmente necesitará hacer algún tipo de verificación en línea. (N.B .: dado que el tiempo devuelto es UTC, no se ve afectado por el horario de verano ni por las zonas horarias, a menos que se cometa un error) –

3
//long currentTimeMillis()-Returns the current time in milliseconds. 
long millis = System.currentTimeMillis(); 

//Divide millis by 1000 to get the number of seconds. 
long seconds = millis/1000; 
+1

Debe explicar por qué su código responde la pregunta. – Markus

Cuestiones relacionadas