Time.local () использует неожиданный часовой пояс - PullRequest
1 голос
/ 13 февраля 2011

Я собираю свой первый скрипт ruby, который должен настроить время пробуждения для моего компьютера (Kubuntu 10.04).

wake_h = 7
wake_m = 40

t = Time.now
puts "Current system time: #{t.to_s}"
t += 24*60*60 unless t.hour.between?(0, 5)
tvals = t.to_a
tvals[0,3] = 0 , wake_m, wake_h

wt = Time.local(*tvals)
puts "Setting wake up time to: #{wt.to_s}"
`rtcwake -m no -t #{wt.to_i}`

Получается следующий вывод:

Current system time: Sun Feb 13 13:15:08 +0100 2011
Setting wake up time to: Mon Feb 14 07:40:00 -0100 2011

Таким образом, очевидно, что Ruby предполагает, что мой местный часовой пояс равен -0100, хотя текущее системное время дает другой (правильный) часовой пояс +0100. Возможно, Time использует неправильную локаль (мне нужен часовой пояс для Германии) или существует проблема летнего времени (в настоящее время у нас есть летнее время в Германии). Как я могу проверить / установить местное время?

С уважением, neradis

1 Ответ

0 голосов
/ 24 мая 2011

Из документации ActiveSupport :: TimeWithZone :

«Подобный времени класс, который может представлять время в любом часовом поясе. Это необходимо, поскольку стандартные экземпляры Ruby Time ограничены UTC и системной зоной ENV ['TZ']. ”

Так вот почему он дает вам -0100.

...