J'utilise les bibliothèques Joda time (1.6) et il continue de renvoyer les objets DateTime avec le mauvais fuseau horaire, l'heure d'été britannique au lieu de GMT.Joda Time donne un mauvais fuseau horaire
Mon poste de travail Windows (exécutant JDK 1.6.0_16) pense qu'il est en GMT et si le fuseau horaire par défaut des classes date/heure du JDK est correct (GMT). J'ai le même comportement sur nos serveurs Linux. J'ai pensé que cela pourrait être une erreur dans les fichiers de base de données de fuseaux horaires dans Joda, donc j'ai reconstruit le pot avec la dernière base de données, mais sans changement.
import java.util.TimeZone;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalTime;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
public class TimeZoneTest {
public static void main(String[] args) {
DateTimeFormatter timeParser = ISODateTimeFormat.timeParser();
TimeZone timeZone = TimeZone.getDefault();
System.out.println(timeZone.getID()); // "Europe/London"
System.out.println(timeZone.getDisplayName()); // "Greenwich Mean Time"
DateTimeZone defaultTimeZone = DateTimeZone.getDefault();
System.out.println(defaultTimeZone.getID()); //"Europe/London"
System.out.println(defaultTimeZone.getName(0L)); //"British Summer Time"
DateTime currentTime = new DateTime();
DateTimeZone currentZone = currentTime.getZone();
System.out.println(currentZone.getID()); //"Europe/London"
System.out.println(currentZone.getName(0L)); //"British Summer Time"
}
}
Debugging par la statique dans org.joda.time.DateTimeZone
initialiseur je vois que l'appel System.getProperty("user.timezone")
donne "Europe/London"
comme prévu.
réponse étendue pour fournir une explication du problème réel – jitter