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에도 배포 할 것이고 설정을 계속하고 싶습니다.
application.rb
작품에 다음을 추가
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local # Or :utc
다른 모든 것이 불완전한 것처럼 보이기 때문에이 답변을 컴파일하기로 결정했습니다.
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
나는 많은 고민 끝에 딘 페리와 같은 결론에 도달했다. 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!
중국 사용자의 경우 아래 두 줄을 추가하십시오 config/application.rb
.
config.active_record.default_timezone = :local
config.time_zone = 'Beijing'
현지 시간을 설정하려면 다음 텍스트를 추가하십시오. application.rb
config.time_zone = 'Chennai'
# WARNING: This changes the way times are stored in the database (not recommended)
config.active_record.default_timezone = :local
그런 다음 서버를 다시 시작하십시오.
'development' 카테고리의 다른 글
지정된 자식에 이미 부모가 있습니다. (0) | 2020.07.02 |
---|---|
zlib에서 우분투 레일 설치 실패 (0) | 2020.07.02 |
발견되지 않은 키의 기본값을 반환하는 HashMap? (0) | 2020.07.02 |
설치된 보석 목록? (0) | 2020.07.02 |
파이썬에서 반복 건너 뛰기 (0) | 2020.07.02 |