2012-03-26 18 views
11

Tengo el siguiente código, mi objetivo va a devolver GMT+0 vez en milisegundos. Pero ¿Por qué siempre obtengo mi timezone millisec local?Java: zona horaria por la que la zona horaria diferente da el mismo valor en milisec

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
Calendar cal2 = Calendar.getInstance(); 
System.out.println("Time zone id is:"+cal.getTimeZone().getID()+";time in millisec:"+cal.getTimeInMillis()); 
System.out.println("Time zone id is:"+cal2.getTimeZone().getID()+";time in millisec:"+cal2.getTimeInMillis()); 

La salida es
Zona horaria id es: GMT, el tiempo en milisegundos: 1332740915154
Zona hora id es: Europa/Helsinki, el tiempo en milisegundos: 1332740915154

Por qué diferente elasticidad Zona horaria ¿MISMO valor en milisegundos?
Supongo que si es GMT+0, entonces debería ser un valor diferente en milisegundos frente a la zona horaria local.

+0

¿Cuál es la zona horaria en su sistema? – sgowd

+0

¿Qué pasa con System.currentTimeMillis() ;? – user84592

+0

Mi zona horaria es GMT + 2 con horario de verano – user84592

Respuesta

21

¿Por qué las diferentes zonas horarias dan MISMO valor en milisegundos?

Porque eso es lo que significa que hacer. De la documentación:

(Devuelve) la hora actual como milisegundos UTC de la época.

En otras palabras, es el valor que sería en el Date devuelto por getTime - que no depende de la zona horaria. Si desea que los valores que dependen de la zona horaria, etc. utilizar Calendar.Get(Calendar.YEAR)

Ambos valores Calendar.getTime() y Calendar.getTimeInMillis() de retorno que representan la instante en el tiempo en el calendario, que es independiente tanto de zona horaria y el sistema de calendario.

+0

¿Mi duda es que la zona horaria da milisegundos o solo da la zona horaria solicitada? – sgowd

+0

@ sans481: No sé lo que estás preguntando, me temo, ¿podrías volver a formular la pregunta? –

+0

No obtengo exactamente lo que devuelve "la hora actual como milisegundos UTC de la época". – sgowd

6

El millisec de un objeto Date en Java es sólo los milisegundos desde GMT+0 1970/01/01 00:00:00. Es independiente de la zona horaria. La zona horaria es una propiedad para formatear la fecha en una cadena legible.

+0

Para eso no son realmente las zonas horarias; eso es más parecido a lo que son los calendarios. Las zonas horarias son para convertir entre UTC y la hora local. –

1

método getTimeInMillis() devuelve la hora actual como milisegundos UTC de la época. Entonces, está obteniendo los mismos milisegundos, incluso cuando ambos objetos de calendario tienen una zona horaria diferente.

Cuestiones relacionadas