Cómo configurar una zona horaria JVM Correctamente
Estoy tratando de ejecutar un programa Java, pero está tomando una zona horaria GMT predeterminada en lugar de una zona horaria definida por el sistema operativo. Mi versión JDK es 1.5 y el sistema operativo es Windows Server Enterprise (2007)
Windows tiene una zona horaria central especificada, pero cuando corro el siguiente programa, me da una hora GMT.
import java.util.Calendar;
public class DateTest
{
public static void main(String[] args)
{
Calendar now = Calendar.getInstance();
System.out.println(now.getTimeZone());
System.out.println(now.getTime());
}
}
Aquí está la salida
sun.util.calendar.ZoneInfo[id="GMT",
offset=0,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
Mon Mar 22 13:46:45 GMT 2010
Tenga en cuenta que no quiero establecer la zona horaria de la aplicación. Quiero que la zona horaria utilizada por JVM sea la especificada en operativo. (No encuentro estos problemas con otros servidores que tienen la versión 1.4 de JDK y Microsoft Server 2003).
Cualquier pensamiento sería muy apreciado.
6 answers
Puede pasar la JVM este param
-Duser.timezone
Por ejemplo
-Duser.timezone=Europe/Sofia
Y esto debería hacer el truco. Establecer la variable de entorno TZ también hace el truco en Linux.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-02 18:44:17
También puede establecer la zona horaria predeterminada en su código utilizando el siguiente código.
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
A la Tuya
TimeZone.setDefault(TimeZone.getTimeZone("Europe/Sofia"));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-12 11:23:03
La respuesta aceptada arriba:
-Duser.timezone="Europe/Sofia"
No funcionó para mí exactamente. Solo pude cambiar mi zona horaria con éxito cuando no tenía comillas alrededor de los parámetros:
-Duser.timezone=Europe/Sofia
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-04 19:31:35
En Windows 7 y para JDK6, tuve que agregar -Duser.timezone="Europe/Sofia"
a la variable del sistema JAVA_TOOL_OPTIONS ubicada en "My computer=>Properties=>Advanced System Settings=>Environment Variables".
Si ya tiene alguna otra propiedad establecida para JAVA_TOOL_OPTIONS
simplemente agregue un espacio y luego inserte su cadena de propiedad.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-14 15:20:49
Si está utilizando Maven :
mvn -Dexec.args="-Duser.timezone=Europe/Sofia ....."
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-19 10:59:11
En win7, si desea establecer la zona horaria correcta como parámetro en JRE, debe editar el archivo deployment.properties
almacenado en path c:\users\%username%\appdata\locallow\sun\java\deployment
agregando la cadena deployment.javaws.jre.1.args=-Duser.timezone\=
my_time_zone
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-18 11:24:40