[ruby-on-rails] Rails에서 Active Record의 기본 시간대를 변경하는 방법은 무엇입니까?
내에서 application.rb
나는 다음과 같은 의견을 보았습니다.
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
config.time_zone = 'Eastern Time (US & Canada)'
위에서 본 것처럼, 나는 config.time_zone
EST 시간에 만들었 습니다. 그러나 여전히 레코드가 DB에서 작성 될 때 datetime
UTC 형식으로 저장되는 것처럼 보입니다 .
위의 의견에서 그들은 말합니다
… 그리고 Active Record를이 영역으로 자동 변환합니다 …
어떻게 할 수 있고 어디서?
또한, 나는 이것을 heroku에도 배포 할 것이고 설정을 계속하고 싶습니다.
답변
다른 모든 것이 불완전한 것처럼 보이기 때문에이 답변을 작성하기로 결정했습니다.
config.active_record.default_timezone 은 데이터베이스에서 날짜 및 시간을 가져올 때 Time.local (: local로 설정된 경우) 또는 Time.utc (: utc로 설정된 경우)를 사용할지 여부를 결정합니다. 기본값은 : utc입니다.
http://guides.rubyonrails.org/configuring.html
Rails 시간대 를 변경하고 싶지만 UTC로 데이터베이스에 Active Record를 계속 저장하려면 다음을 사용하십시오.
# application.rb
config.time_zone = 'Eastern Time (US & Canada)'
당신이 변경하려는 경우 레일 시간대를 그리고 있는 액티브 레코드 이 시간대, 사용 저장 시간을
# application.rb
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local
경고 : 비 UTC 형식으로 데이터베이스에 시간을 저장하기 전에 실제로 두 번, 심지어 세 번 생각해야합니다.
참고
수정 한 후에 Rails 서버를 다시 시작하는 것을 잊지 마십시오application.rb
.
config.active_record.default_timezone
두 가지 값만 취할 수 있음을 기억하십시오
- : local (에 정의 된 시간대로 변환
config.time_zone
) - : utc (UTC로 변환)
사용 가능한 모든 시간대를 찾는 방법은 다음과 같습니다.
rake time:zones:all
답변
application.rb
작품에 다음을 추가
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local # Or :utc
답변
나는 많은 고민 끝에 딘 페리와 같은 결론에 도달했다. config.time_zone = 'Adelaide'
및 config.active_record.default_timezone = :local
실적이 좋은 조합이었다. 프로세스 중에 찾은 내용은 다음과 같습니다 .
답변
필자의 경우 (Rails 5), 결국이 두 줄을 추가했습니다. app/config/environments/development.rb
config.time_zone = "Melbourne"
config.active_record.default_timezone = :local
그게 다야! 그리고 멜버른이 올바르게 읽히도록 터미널에서 명령을 실행했습니다.
bundle exec rake time:zones:all
멜버른은 내가 살고있는 시간대에 등록했습니다!
답변
시간대를 세계적으로 UTC로 설정하려면 Rails 4에서 다음을 수행 할 수 있습니다.
# Inside config/application.rb
config.time_zone = "UTC"
config.active_record.default_timezone = :utc
응용 프로그램을 다시 시작하지 않으면 변경 사항이 표시되지 않습니다.
답변
레일 4.2.2에서 이동 application.rb
및 사용 config.time_zone='city'
(예 : ‘런던’또는 ‘부카레스트’또는 ‘암스테르담’등).
잘 작동합니다. 그것은 나를 위해 일했다.
답변
나는이 블록을 내 environment.rb
파일 에 추가해야 했고 모두 잘되었다 🙂
Rails.application.configure do
config.time_zone = "Pacific Time (US & Canada)"
config.active_record.default_timezone = :local
end
- 줄 앞에 추가했습니다
Rails.application.initialize!