TimeZone не обнаруживает DST - PullRequest
0 голосов
/ 28 июня 2011

Я установил эмулятор на этот часовой пояс: org.apache.harmony.luni.internal.util.ZoneInfo["CET",mRawOffset=3600000,mUseDst=true]

Это время Брюсселя, где есть летнее время, поэтому мы GMT + 02: 00 летом и GMT + 01: 00 зимой.

Однако программно нет способа обнаружить DST в июле 1970 года, но он обнаруживает его в 2011 году. Например:

    TimeZone tz = TimeZone.getDefault();

    if(tz.inDaylightTime(new Date(15638400000))){ //This timestamp is 01/07/1970 00:00:00:00 GMT
         System.out.println("daylight time in July 1970"); //Not printed, despite being clearly in summer.
    }
    if(tz.inDaylightTime(new Date())){ // Now, 28/06/2011
         System.out.println("daylight time in June 2011"); //printed, thats OK
    }

Что не так с этим кодом? Там не было летнего времени в 1970 году? То же самое происходит со смещением, которое, согласно Javadoc, включает в себя DST:

    int off = tz.getOffset(15638400000); //This returns +01:00, wrong!!
    int off2 = tz.getOffset(System.currentTimeMillis()); //returns +02:00, OK.

Некоторые идеи об этом поведении? Спасибо.

EDIT: Я провел несколько тестов для этого часового пояса, и первое лето с летним временем было обнаружено в 1977 году. В конце концов, должна быть дата начала, с которой эта политика была реализована. Однако 1977 год кажется мне немного запоздалым (нефтяной кризис был в 1970 и 1973 годах). Я не нашел ни одного официального документа, подтверждающего это.

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Не знаю о Бельгии, но в Швеции DST был введен в 1980 году, поэтому, возможно, правильно, что в 1970 году для Бельгии не было DST. Но если для вашего приложения очень важно знать о DST в 1970 году, вам, возможно, придется изучить исходный код класса java.util.Date или сравнить его с результатом java.util.GregorianCalendar.

.
0 голосов
/ 30 июня 2011

Протестировано на реальном устройстве (HTC Magic, OS 1.6), оно обнаруживает DST для Брюсселя / CEST даже в 1970 году. Так что это еще один пример различного поведения между эмулятором и реальными устройствами.

ЯЯ собираюсь снова протестировать его на более новом устройстве, чтобы увидеть, существуют ли разные базы данных TZ в разных версиях ОС.

ОБНОВЛЕНИЕ Протестировано на Samsung Galaxy Tab (OS 2.2), то же поведение, что и у HTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...