복붙노트

[RUBY-ON-RAILS] 왜`아무것도 할 것 config.time_zone`하지 않는 이유는 무엇입니까?

RUBY-ON-RAILS

왜`아무것도 할 것 config.time_zone`하지 않는 이유는 무엇입니까?

application.rb, 그것은 말합니다 :

그러나 설정 config.time_zone = '중부 표준시 (미국과 캐나다)'또는 config.time_zone = '동부 표준시 (미국과 캐나다)'효과가 없습니다 - 모델에 created_at 필드는 UTC에 저장되는 STIL입니다.

이 railsforum 답변에 따르면 :

그게 사실이라면, 왜 내 시스템 시간이 태평양 표준시 (미국과 캐나다)와 config.time_zone = '중부 표준시 (미국과 캐나다)'또는 config.time_zone 때 = '동부 표준시 (미국과 캐나다)'을하다 의 created_at 시간이 올바른 UTC는 것을? 그것은 잘못된해야하지?!

태평양 표준시 시간 8 AM입니다 경우, 다음 EST 오후 11시이며 UTC 4 오전, 때문에. 그 레일을 추정하는 것은 Time.now가하는 그 오후 8 할 것이다. 그리고 우리는 서버가 EST에 있음 레일 말했다. 그래서 8 오후까지 레일로에 관한 한 EST의 시간이 될 것와 UTC는 잘못된 것입니다 세계 협정시 오전 5시 될 것입니다 (실제 시간은 태평양 표준시 오후 8시 때문에 / 4 AM UTC입니다 동부 표준시 오후 11시)

여기 무슨 일이야?

해결법

  1. ==============================

    1.여기에 도움이 될 수 개념과 것들의 목록입니다 :

    여기에 도움이 될 수 개념과 것들의 목록입니다 :

    config.time_zone는 일반적으로 운영 체제에 의해 제어되는 "서버 시간", 설정하지 않습니다.

    (다른 설정을 변경하지 않는 한) 레일 항상 데이터베이스에 UTC에서 날짜를 저장합니다.

    Time.now이 시간대에있는 당신의 컴퓨터에의 현지를 반환하고 또한 루비를 의미하며, 따라서 레일은 UTC로의 현지을 변환하는 방법을 알고있는 운영 체제, 오프셋 로컬 시간대를 포함한다. 당신은 그래서 라이브러리를로드 레일 직접 IRB 사용하여이 작업을 시도 할 수 있습니다 :

    ctcherry$ irb
    >> Time.now
    => Mon Feb 21 20:53:14 -0800 2011
    >> 
    

    config.time_zone, 또는 Time.zone가 설정되어있는 경우에는, EST을 말할 수 예상하는 레일 당신은 당신이이 경우 EST에, 지정된 시간대에있을 그 시간과 날짜를 의미하는 날짜의 속성을 설정합니다. 이것은 그들이 그들의 현지 시간과 날짜를 사용할 수 있으며, 당신이 당신의 액티브 모델에 직접 전달할 수 있으며, 레일 데이터베이스에 저장 UTC로 변환 할 수 있도록, Time.zone는 최종 사용자의 시간대와 동일하게 설정하는 이유입니다.

    그 도움은 전혀합니까?

  2. ==============================

    2.당신은 UTC 이외의 무언가를 얻기 위해 사용 in_time_zone (즉 Time.now.in_time_zone)에 필요합니다.

    당신은 UTC 이외의 무언가를 얻기 위해 사용 in_time_zone (즉 Time.now.in_time_zone)에 필요합니다.

  3. from https://stackoverflow.com/questions/5073917/why-doesnt-config-time-zone-seem-to-do-anything by cc-by-sa and MIT license