[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_zoneEST 시간에 만들었 습니다. 그러나 여전히 레코드가 DB에서 작성 될 때 datetimeUTC 형식으로 저장되는 것처럼 보입니다 .

위의 의견에서 그들은 말합니다

… 그리고 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!