Неправильный час дня в календаре JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Неправильный час дня в календаре Java

Сообщение Anonymous »

TimeZone zone1 = TimeZone.getTimeZone("America/New_York");
TimeZone zone2 = TimeZone.getTimeZone("Europe/Istanbul");
int hour1 = Calendar.getInstance(zone1).get(Calendar.HOUR_OF_DAY);
int hour2 = Calendar.getInstance(zone2).get(Calendar.HOUR_OF_DAY);

// hour1 gives 1
// hour2 gives 7
< /code>

Прямо сейчас это 1 в Нью -Йорке, но 8 в Стамбуле. Почему Java дает 1 меньший результат для Европы/Стамбула? Может быть, из -за дневного сбережений? Если да, разве это не позаботится об этом автоматически? Я думаю, что в следующем показано, что оба часовых поясов имеют смещение DST: < /p>

zone1.getDSTSavings()/1000L // gives 3600
zone2.getDSTSavings()/1000L // gives 3600

zone1.useDaylightTime() // true
zone2.useDaylightTime() // true

zone1.inDaylightTime(new Date()) // false
zone2.inDaylightTime(new Date()) // false
< /code>

Решен: < /strong> < /p>

Данные часового пояса не были актуальны. Загрузите утилиту Tzupdater с веб -сайта Java, и выпуск: < /p>

java -jar tzupdater.jar -l 'http://www.iana.org/time-zones/reposito ... est.tar.gz'
< /code>

Это автоматически загружает последние данные TZ и обновляет JRE. Это ад. Потеря 2 дня за глупую проблему часового пояса. Это должно быть автоматизировано, и JRE должен самостоятельно обновлять каждый день. Почему бы нет ???crontab -e
00 05 * * * java -jar tzupdater.jar -l https://www.iana.org/time-zones/reposit ... est.tar.gz


Подробнее здесь: https://stackoverflow.com/questions/334 ... a-calendar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»