new from java date timezone

from - ¿Cuál es la zona horaria predeterminada en java.util.Date?



timezone java (3)

Si creo un nuevo objeto Date () ¿Cuál será la zona horaria predeterminada que se imprimirá?

Tengo mi máquina funcionando en GMT. Y estoy creando un nuevo objeto Date (). Si imprimo, ¿por qué se muestra el jueves 05 de julio, 08:21:05 PKT 2012. ¿Cómo toma la zona horaria como PKT?


Bueno, en realidad las fechas básicas suelen ser independientes de la zona horaria, no almacenan zonas horarias. Para hacer uso de la zona horaria utiliza formateadores, calendarios y similares. Por supuesto, la fecha básica debe estar en una zona horaria predeterminada, cualquiera que sea (generalmente GMT), de lo contrario, no podrá crear una fecha local desde la instancia de la fecha básica.

En su caso particular, sería útil examinar a) los javadocs yb) dentro de la propia clase, ya que JDK se distribuye generalmente con el código fuente de java.util.Date. Según javadoc, la clase java.util.Date representa el número de milisegundos desde el tiempo base estándar conocido como "la época", es decir, el 1 de enero de 1970, a las 00:00:00 GMT.

Si muestra una fecha diferente cuando se imprime en su máquina, es porque su sistema lo imprimirá usando la zona horaria predeterminada para su sistema. Sin embargo, puede imprimirlo usted mismo utilizando cualquier otra zona horaria.


Si está ejecutando bajo Linux, hay algún archivo mágico de zona horaria en algún lugar del sistema. Para mi gentoo, la magia estaba creando un archivo de texto / etc / timezone con contenido

Europe/Berlin

Lo gracioso es que la date dio la hora correcta y la zona horaria (CEST) todo el tiempo, pero Java me envió a Greenwhich.

> date Thu Sep 18 08:49:14 CEST 2014


La fecha en sí no tiene ninguna zona horaria. Su método toString() utiliza la zona horaria predeterminada actual para devolver una cadena que representa esta fecha:

Date date = new Date(); System.out.println(TimeZone.getDefault()); System.out.println(date); TimeZone.setDefault(TimeZone.getTimeZone("UTC")); System.out.println(TimeZone.getDefault()); System.out.println(date);

La ejecución del código anterior en mi máquina lleva a la siguiente salida:

sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]] Fri Jul 06 09:24:45 CEST 2012 sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null] Fri Jul 06 07:24:45 UTC 2012