2012-02-22 23 views
46

Estoy actualmente la creación de objetos UTC DateTime utilizando el idioma actualDefaulting zona horaria fecha de UTC para DateTime de JodaTime

DateTime now = new DateTime(DateTimeZone.UTC); 

¿Hay alguna forma a los valores predeterminados para que pueda crear objetos DateTime basados ​​en UTC utilizando el constructor por defecto por lo es más implícito?

DateTime now = new DateTime(); 

Respuesta

60

Si sólo desea configurar la zona horaria predeterminada de tiempo joda, utilice DateTimeZone.setDefault.


Si desea cambiar la zona horaria que el conjunto de JVM usos utilizan TimeZone.setDefault método. Sólo asegúrese de configurarlo temprano, ya que puede ser almacenado en caché por el tiempo joda .. citó de DateTimeZone.getDefault: zona horaria

El valor predeterminado se deriva de la user.timezone propiedad del sistema. Si es nulo o no es un identificador válido, entonces se convierte el valor del valor predeterminado de JDK TimeZone. Si eso falla, se usa UTC.

+8

nota, que afectará a _whole_ jvm, que puede o no ser lo que el OP quiere. – jtahlborn

+4

Agregó cómo configurarlo "solo" para el tiempo joda ('DateTimeZone.setDefault'). – dacwe

+4

Quiero enfatizar la precaución por jtahlborn. 'TimeZone.setDefault' afecta a * cada hilo * de * cada aplicación * que se ejecuta en la misma JVM. Llamar a este método puede crear todo tipo de confusión y comportamiento inesperado en otras clases. –

15

Si usted está realmente preocupado por los caracteres adicionales, a continuación, basta con crear un método de ayuda:

public static DateTime newUTCDateTime() { 
    return new DateTime(DateTimeZone.UTC); 
} 
Cuestiones relacionadas