2011-02-13 27 views
1

我正在裝配我的第一個ruby腳本,它應該爲我的電腦設置喚醒時間(Kubuntu 10.04)。Time.local()使用意外時區

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 

因此很明顯,紅寶石假設我的本地時區是-0100,儘管當前的系統時間產生的另一個+0100(正確)的時區。可能時間會使用錯誤的語言環境(我需要德國的時區),或者存在DST問題(我們目前在德國有DST)。我如何檢查/設置本地時間使用?

問候,neradis

回答

0

ActiveSupport::TimeWithZone文檔:

「A類時類,它可以在任何時區代表時間。必要的,因爲標準Ruby時間實例僅限於UTC和系統的ENV ['TZ']區域。「

所以這就是爲什麼它給你-0100。