2012-02-23 17 views

Respuesta

7

El problema parece ser con la zona horaria, no el valor en sí Date. Así que en lugar de imprimir la fecha actual, usar algo como esto para imprimir la zona horaria actual:

import java.util.TimeZone ; 

public class Test { 
    public static void main(String[] args) throws Exception { 
     TimeZone zone = TimeZone.getDefault(); 
     System.out.println(zone.getDisplayName()); 
     System.out.println(zone.getID()); 
    } 
} 

Por ejemplo, para mí que las impresiones:

Greenwich Mean Time 
Europe/London 

Una vez que conozca más detalles sobre lo Java piensa que su zona horaria predeterminada es, puede empezar a buscar por qué piensa eso. ¿Hay algo sobre cómo está ejecutando Java que no es estándar? ¿Alguna variable de entorno que se parezca sospechosamente a la zona horaria incorrecta?

Usted también puede imprimir las siguientes propiedades del sistema, que se utilizan para determinar la zona horaria:

user.timezone 
user.country 
java.home 

(imprimirlos antes conseguir la zona horaria predeterminada - user.timezone se establece como parte de ir a buscar que, si no se ha establecido antes.)

+0

Extraño. Ejecuto este programa y me da Acre Time America/Rio_Branco. Donde como mi hora de Windows es UTC + 5. Debería ver por qué piensa esto. –

+0

Además, 2 personas están equivocadas y tenemos la versión 1.6.13. Donde como un chico que tiene 1.6.26 haciéndolo correcto. –

+0

Estoy obteniendo los siguientes valores. Santa vaca Mis configuraciones de Windows son ignoradas. user.timezone = America/Rio_Branco user.country = US java.home = C: \ Archivos de programa \ Java \ jdk1.6.0 \ jre –

3

es posible que haya 'forzado' su zona horaria en otro lugar en el que el código o en librerías enlazadas

static { 
     TimeZone.setDefault(anotherTimeZone); 
} 

Esto desencadenará este tipo de comportamiento, incluso en el principal.

+0

¿Pero cómo funciona? ¿Tengo que declarar TimeZone una vez en alguna parte o en cada clase que tengo? – Tony

1

java.util.Date indica la fecha del sistema. Cambie la hora del sistema UTC a GMT.

Cuestiones relacionadas