[RUBY-ON-RAILS] 레일에 한 시간대에서 다른 시간대로 시간을 변환
RUBY-ON-RAILS레일에 한 시간대에서 다른 시간대로 시간을 변환
내 created_at 타임 스탬프는 UTC에 저장됩니다
>> Annotation.last.created_at
=> Sat, 29 Aug 2009 23:30:09 UTC +00:00
어떻게 (계정 일광 절약 고려) 나는 '동부 표준시 (미국과 캐나다)'에 그 중 하나를 변환합니까? 뭔가 같은 :
Annotation.last.created_at.in_eastern_time
해결법
-
==============================
1.날짜 시간 클래스의 in_time_zone 방법을 사용
날짜 시간 클래스의 in_time_zone 방법을 사용
Loading development environment (Rails 2.3.2) >> now = DateTime.now.utc => Sun, 06 Sep 2009 22:27:45 +0000 >> now.in_time_zone('Eastern Time (US & Canada)') => Sun, 06 Sep 2009 18:27:45 EDT -04:00 >> quit
특정 그래서 예를 들면
Annotation.last.created_at.in_time_zone('Eastern Time (US & Canada)')
-
==============================
2.이 오래된 질문이지만, 뭔가를 언급 할 가치가있다. 이전 응답에서는 일시적으로 시간대를 설정하는 before_filter를 사용하도록 제안합니다.
이 오래된 질문이지만, 뭔가를 언급 할 가치가있다. 이전 응답에서는 일시적으로 시간대를 설정하는 before_filter를 사용하도록 제안합니다.
당신은 이제까지 Time.zone 스레드의 정보를 저장하기 때문에 그렇게해서는 안됩니다, 그것은 아마 스레드에 의해 처리 다음 요청에 누출됩니다.
대신 요청이 완료된 후 Time.zone 리셋 있는지 확인하기 위해 around_filter을 사용해야합니다. 뭔가 같은 :
around_filter :set_time_zone private def set_time_zone old_time_zone = Time.zone Time.zone = current_user.time_zone if logged_in? yield ensure Time.zone = old_time_zone end
여기에 대해 자세히 알아보기
-
==============================
3.당신은 당신의 /config/application.rb이를 추가하는 경우
당신은 당신의 /config/application.rb이를 추가하는 경우
config.time_zone = 'Eastern Time (US & Canada)'
그럼 당신은 셀 수
Annotation.last.created_at.in_time_zone
지정된 시간대의 시간을 얻을 수 있습니다.
-
==============================
4.당신은 당신의 /config/application.rb를 구성하는 경우
당신은 당신의 /config/application.rb를 구성하는 경우
config.time_zone = 'Eastern Time (US & Canada)' Time.now.in_time_zone DateTime.now.in_time_zone
-
==============================
5.동부 시간으로 시간대를 설정합니다.
동부 시간으로 시간대를 설정합니다.
당신은 시간대에 설정 / environment.rb에 기본을 설정할 수 있습니다
config.time_zone = "Eastern Time (US & Canada)"
이제 당겨 모든 기록은 그 시간대에있을 것입니다. 서로 다른 시간대를해야하는 경우 컨트롤러에 before_filter으로 변경할 수있는 사용자의 시간대에 따라 말.
class ApplicationController < ActionController::Base before_filter :set_timezone def set_timezone Time.zone = current_user.time_zone end end
그냥 당신이 UTC로 데이터베이스에 모든 시간을 저장하고 확인하고 모든 달콤한 될 것입니다.
from https://stackoverflow.com/questions/1386871/convert-time-from-one-time-zone-to-another-in-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 프로젝트에 레일 컨트롤러와 모델 이름을 바꾸려면 (0) | 2020.02.18 |
---|---|
[RUBY-ON-RAILS] 루비의 액세스 방법을 인수하는 방법은 무엇입니까? (0) | 2020.02.17 |
[RUBY-ON-RAILS] 레일 eager_load_paths VS autoload_paths 대해 혼란 4 (0) | 2020.02.17 |
[RUBY-ON-RAILS] 대 find_by 대 발견 (0) | 2020.02.17 |
[RUBY-ON-RAILS] 기록이 레일에서 컨트롤러에서 존재하는지 확인 (0) | 2020.02.17 |