web-dev-qa-db-fra.com

Par défaut, le fuseau horaire de la date est UTC pour DateTime de Jodatime

Je crée actuellement des objets UTC DateTime en utilisant l'idiome actuel

DateTime now = new DateTime(DateTimeZone.UTC);

Existe-t-il un moyen de définir des valeurs par défaut pour que je puisse créer des objets DateTime basés sur UTC à l'aide du constructeur par défaut, ce qui est plus implicite?

DateTime now = new DateTime();
54
algolicious

Si vous souhaitez uniquement définir le fuseau horaire par défaut pour l'heure Joda, utilisez DateTimeZone.setDefault .


Si vous souhaitez modifier le fuseau horaire utilisé par le jvm entier utilisez TimeZone.setDefault méthode. Assurez-vous simplement de le définir tôt car il peut être mis en cache par le temps joda .. cité de DateTimeZone.getDefault :

Le fuseau horaire par défaut est dérivé de la propriété système user.timezone. Si cela est nul ou n'est pas un identifiant valide, la valeur par défaut de JDK TimeZone est convertie. Si cela échoue, UTC est utilisé.

70
dacwe

Si vous êtes vraiment préoccupé par les caractères supplémentaires, créez simplement une méthode d'assistance:

public static DateTime newUTCDateTime() {
  return new DateTime(DateTimeZone.UTC);
}
15
jtahlborn