Часовой пояс Java испорчен

Проще всего использовать Task Scheduler для Windows или задание cron в Linux. Там вы можете указать команду или программу, которые должны запускаться в определенное вами время. Я определенно не рекомендую R-скрипт вроде:

time_to_run = as.POSIXct("2012-04-18 17:25:40")
while(TRUE) {
   Sys.sleep(1)
   if(Sys.time == time_to_run) {
     ## run some code
   }
}

30
задан Markus Safar 7 February 2016 в 18:06
поделиться

3 ответа

Это - "причуда" в способе, которым JVM ищет zoneinfo файл. См. идентификатор 6456628 .

Ошибки, самое легкое обходное решение должно сделать/etc/localtime символьной ссылкой на корректный zoneinfo файл. Для тихоокеанского времени должны работать следующие команды:

# sudo cp /etc/localtime /etc/localtime.dist
# sudo ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

у меня не было проблем с подходом символьной ссылки.

Редактирование: Добавленный "sudo" к командам.

24
ответ дан Jason Day 7 February 2016 в 18:06
поделиться
  • 1
    @rogerdpack crc isn' t близко к самому быстрому хешу, даже с asm. – OneOfOne 14 August 2014 в 00:00

Это может помочь перепроверить правила часового пояса, которые что использует Ваша ОС.

/usr/bin/zdump -v /etc/localtime | less

Этот файл должен содержать Ваши правила перехода на летнее время, как этот на 2080 год:

/etc/localtime  Sun Mar 31 01:00:00 2080 UTC = Sun Mar 31 02:00:00 2080 BST isdst=1 gmtoff=3600

можно сравнить это с правилами часового пояса, Вы думаете, что необходимо использовать. Они могут быть найдены в /usr/share/zoneinfo / .

0
ответ дан McDowell 7 February 2016 в 18:06
поделиться
  • 1
    по-видимому, adler32 является " плохо для numbers" strchr.com/hash_functions , но CRC32 в порядке, по крайней мере, мудрое распределение. – rogerdpack 21 June 2012 в 17:50

У меня была подобная проблема, возможно тот же. Однако мой сервер кота работает на поле окон, таким образом, решение для символьной ссылки не будет работать.

я установил -Duser.timezone=Australia/Sydney в JAVA_OPTS однако, кот не распознает, что DST был в действительности. Как обходное решение я изменился Australia/Sydney (GMT+10:00) на Pacific/Numea (GMT+11:00) так, чтобы времена правильно отобразились однако, я хотел бы знать фактическое решение или ошибку, если таковые имеются.

2
ответ дан abarax 7 February 2016 в 18:06
поделиться
  • 1
    +1 для предложения прямого сравнения,-1 для предложения CRC. – Steven Sudit 3 February 2011 в 07:41
Другие вопросы по тегам:

Похожие вопросы: