2011-12-15 3 views
1

레일 3.0.10에서 나는 사용자가 미국 전역에 게시 된 코스 시간을 보는 방법을 변경하기 위해 Time.zone을 사용하고 있습니다. 그러나 시간대를 변경하면 내가 그러나 그것은 것을 나타나지 않는 시간이 Time.zone의 변화를 수용 할뿐만 아니라 오프셋으로 변경하는 기대 나는레일 시간대 : Time.current를 변경하지 않는 Time.zone 설정

Time.zone = TZInfo::Timezone.get('America/Los_Angeles') 
Time.zone  # => (GMT-08:00) America/Los_Angeles 
Time.current # => 2011-10-30 14:00:00 -0700 


Time.zone = TZInfo::Timezone.get('America/Chicago') 
Time.zone  # => (GMT-06:00) America/Chicago 
Time.current # => 2011-10-30 14:00:00 -0700 

을 기대할 수있는 방식으로 작동하지 않는 것 그렇게 행동합니다.

LA에있는 사용자가 캘리포니아 주 오전 9시에 끝나는 코스를 만들고 다른 시간대의 사용자가 코스가 비활성 상태가되어 다른 장소에서 다른 시간대에 사라지는 문제가 발생합니다. 시각. 누군가가 Time.zone이 실제로 어떤 설정을하고 있는지, 그리고 오후 9시 (PST)에서 끝나는 과정을 11시 (CST)에 올바르게 사라지게 할 수있는 방법에 대해 설명해 줄 수 있습니까?

답변

4

당신이 설정 한 타임 존의 현재 시각을 줄 것이다

Time.zone.now 

이 함께

Time.current 

를 교체합니다.

+0

덕분에, SO 잘못의 또 다른 포스터는 전류가 본질적으로 Time.zone.now의 별칭이었다 내가 문서를 확인해야 추측했다. 도움을 감사하십시오 – Schneems

+0

http://apidock.com/rails/v3.0.5/Time/current/class 및 http://apidock.com/rails/v3.0.7/Time/current/class에서 살펴보십시오. Time.current의 동작이 Rails 3.0.5와 Rails 3.0.7 사이에서 변경되었음을 알 수있다. Rails 3.0.7 이전에는 Time.zone_default가 설정된 경우 Time.zone.now 만 리턴했습니다. 그렇지 않으면 Time.now가 반환됩니다. 3.0.5 이상을 사용 하시겠습니까? – jbrowning

0
t = Time.now 
Time.zone = TZInfo::Timezone.get('America/Los_Angeles') 
t.in_time_zone 

또는

Time.now.in_time_zone('America/Los_Angeles')