2011-02-13 1 views
1

내 컴퓨터 (쿠분투 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}` 

다음 출력이 생성됩니다 : 현재의 시스템 시간이 0100의 또 다른 (올바른) 시간대를 얻을 수 있지만

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으로 내 로컬 시간대를 가정합니다. 아마도 Time이 잘못된 로케일을 사용하거나 (독일 시간대가 필요합니다) DST 문제가 있습니다 (현재 독일에 DST가 있음). 현지 시간 사용을 확인/설정하려면 어떻게해야합니까?

안부, ActiveSupport::TimeWithZone의 문서에서

답변

0

을 neradis :

"어떤 시간대에 시간을 나타낼 수있는 시간과 같은 클래스입니다. 표준 Ruby Time 인스턴스는 UTC 및 시스템의 ENV [ 'TZ'] 영역으로 제한되기 때문에 필요합니다.

그래서 그것이 -0100을 부여하는 이유입니다.