Проще всего использовать 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
}
}
Это - "причуда" в способе, которым 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" к командам.
Это может помочь перепроверить правила часового пояса, которые что использует Ваша ОС.
/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 / .
У меня была подобная проблема, возможно тот же. Однако мой сервер кота работает на поле окон, таким образом, решение для символьной ссылки не будет работать.
я установил -Duser.timezone=Australia/Sydney
в JAVA_OPTS
однако, кот не распознает, что DST был в действительности. Как обходное решение я изменился Australia/Sydney
(GMT+10:00) на Pacific/Numea
(GMT+11:00) так, чтобы времена правильно отобразились однако, я хотел бы знать фактическое решение или ошибку, если таковые имеются.