Time.local()使用意外时区

时间:2011-02-13 12:26:23

标签: ruby time locale

我正在组装我的第一个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使用错误的语言环境(我需要德国的时区)或者有DST问题(我们目前在德国有DST)。如何查看/设置本地时间使用?

问候,neradis

1 个答案:

答案 0 :(得分:0)

来自ActiveSupport::TimeWithZone的文档:

“类似时间的类,可以代表任何时区的时间。这是必要的,因为标准的Ruby Time实例仅限于UTC和系统的ENV ['TZ']区域。“

这就是为什么它给你-0100。