2013-06-23 2 views
0

오늘 문제가 발생하여 혼란 스럽습니다.
DateTime을 데이터베이스에 저장하려고하면 작동하는 것처럼 보입니다. 그러나 다시 검색하려고하면 이 아닌으로 돌아오고 있습니다.
이것은 내가 저장하고있는 레코드 에서뿐만 아니라 created_atupdated_at 필드에서도 발생합니다. 내 application.rb에서application.rb에서 TImeZone을 설정할 때 DateTime이 저장되지 않습니다.

config.time_zone = "Bern" 
    config.active_record.default_timezone = "Bern" 

을 제거하여, 그것을 아래로 추적 할 수 있었다 - 그리고 완벽하게 다시 작동하는 것 같다.

이 문제를 해결하고 실제로 (베른) 시간대에 레코드를 저장할 수있는 방법이 있습니까?

답변

0

"Bern"는 Rails의 올바른 표준 시간대 식별자가 아니며 그 원인이 문제가 아닌 것으로 생각됩니다. UTC에 저장 - 난 강력 어쨌든 현지 시간대에 타임 스탬프를 저장에 대해 권하고 싶습니다, 그러나

rails c - ActiveSupport::TimeZone.all.map(&:name) 

:

comments on this answer에 따르면, 당신은 올바른 시간대 ID를 확인하기 위해 다음 명령을 사용할 수 있습니다 , 적절한 경우 사용자의 현지 표준 시간대로 변환하십시오. 다른 점을 제외하면 일광 절약 시간 전환에 관한 문제를 피할 수 있습니다.

+0

해당 목록에 따르면 "Bern"는 유효한 TimeZone입니다. "유럽/베른"인 것으로 의심됩니다. 힘든 일을 상세히 설명해 주셔서 감사합니다. 예, 현지 시간으로 저장하지 않는 것이 좋습니다. – mlang

+0

@ mlang : 흠. 유럽 ​​/ 베른은 타당한 TZDB ID가 아닙니다. http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html을 보면 "베른"에서 "유럽/베를린"으로의 매핑이 있습니다. 나는 레일스 사람이나 심지어 루비 사람이 아니라고 고백한다. 그래서 어떤 비트가 어떤 일을하는지 분명하지 않다 ... –

+0

흠 .. "유럽/베를린"을 간단히 사용해야 할 수도있다. 하지만 UTC로 저장하는 방법을 사용하고 있습니다. 유지 관리가 더 쉬워졌습니다. 나는 내가 현지 시간에 데이터를 저장할 생각을 모른다. – mlang