[RUBY-ON-RAILS] 레일에서 현지 시간으로 UTC로 변환 3
RUBY-ON-RAILS레일에서 현지 시간으로 UTC로 변환 3
나는 레일 3에서 현지 시간으로 UTC 시간 또는 TimeWithZone을 변환하는 데 문제가 있습니다.
말의 순간 UTC에서 시간 변수 (예를 들어, 순간 = Time.now.utc)입니다. 방법 (즉, EST / EDT를 사용) 내가 DST를 돌보는, 내 시간대에 순간을 변환합니까?
더 정확하게, 나는 "월요일 3 월 14 일 오전 9"인쇄 출력하고 싶은 경우 시간 동부 표준시 오전 9시 지난 월요일 인 경우 아침 동부 서머 타임 오전 9시와 "월요일 3 월 7 일 오전 9시"에 시간 해당합니다.
바라건대 다른 방법이?
편집 : 내가 먼저 인정 시간대되어야한다 "EDT"를 생각했지만, "EDT는"더 많은 시간대의 상태처럼, 실제 시간대 없습니다. 예를 들어이 Time.utc (2011,1,1) .in_time_zone ( "EDT")을 요청 이해가되지 않습니다. "EST는"일광 절약 시간을 사용하고 있습니다하지 않는 몇 군데 (UTC-5) 일 년간에 사용되는 실제 시간대, 같이 그것은 혼란 조금이다.
해결법
-
==============================
1.레일은 자신의 이름을 가지고있다. 그들과 함께보기 :
레일은 자신의 이름을 가지고있다. 그들과 함께보기 :
rake time:zones:us
존 : 당신은 또한 레이크 시간을 실행할 수있는 모든 시간대의 모든합니다. 더 영역 관련 레이크 작업을 참조하십시오 : 레이크 -D 시간을
그래서, 자동으로 DST 음식을 장만, EST로 변환 :
Time.now.in_time_zone("Eastern Time (US & Canada)")
-
==============================
2.시간 #에서의 현지 당신에게 코드를 실행하는 시스템의 현재 시간대의 시간을 줄 것이다 :
시간 #에서의 현지 당신에게 코드를 실행하는 시스템의 현재 시간대의 시간을 줄 것이다 :
> moment = Time.now.utc => 2011-03-14 15:15:58 UTC > moment.localtime => 2011-03-14 08:15:58 -0700
업데이트 : 특정 시간대가 아닌 자신의 시간대에 Conver 유럽하려는 경우, 올바른 방향으로 가고있는 것입니다. 대신 EDT 대 EST에 대한 걱정으로하지만, 그냥 일반적인 동부 시간대에 통과 - 그것은 EDT 또는 EST인지 일을 기준으로 알 수 :
> Time.now.utc.in_time_zone("Eastern Time (US & Canada)") => Mon, 14 Mar 2011 11:21:05 EDT -04:00 > (Time.now.utc + 10.months).in_time_zone("Eastern Time (US & Canada)") => Sat, 14 Jan 2012 10:21:18 EST -05:00
-
==============================
3.보석은 클라이언트 측에서이 모든 것을 할베이스 캠프로 LOCAL_TIME라는 좋은 실제로있다, 저는 믿습니다 :
보석은 클라이언트 측에서이 모든 것을 할베이스 캠프로 LOCAL_TIME라는 좋은 실제로있다, 저는 믿습니다 :
https://github.com/basecamp/local_time
-
==============================
4.그것은 시스템에 로컬 영역을 사용하여 쉽게 구성 할 수있다, 당신의 application.rb이 추가 단지에
그것은 시스템에 로컬 영역을 사용하여 쉽게 구성 할 수있다, 당신의 application.rb이 추가 단지에
config.time_zone = Time.now.zone
그런 다음, 레일은 당신이 당신의 현지에서 타임 스탬프를 표시해야하거나의 현지을 얻기 위해이 명령 같은 것을 사용할 수 있습니다
Post.created_at.localtime
-
==============================
5.이유를 알고하지 않습니다하지만 내 경우에이 방법은 이전 제안 작동하지 않습니다. 그러나 다음과 같이 작동합니다 :
이유를 알고하지 않습니다하지만 내 경우에이 방법은 이전 제안 작동하지 않습니다. 그러나 다음과 같이 작동합니다 :
Time.now.change(offset: "-3000")
물론 당신은 당신에 오프셋 값을 변경해야합니다.
-
==============================
6.당신이 사용자의 시간대를 얻으려면해서 실제로 그 일을하는 경우 다음 당신이 할 일은 당신을 설정 / applications.rb 시간대를 변경할 수 있습니다.
당신이 사용자의 시간대를 얻으려면해서 실제로 그 일을하는 경우 다음 당신이 할 일은 당신을 설정 / applications.rb 시간대를 변경할 수 있습니다.
이 같이 :
현재 시간대를 지정하는 경우에도 레일은 기본적으로 UTC에서 시간 기록을 저장합니다.
config.time_zone = "Singapore"
이 모든 것입니다 그래서 당신은해야하고 넌 좋은 이동합니다.
from https://stackoverflow.com/questions/5300493/convert-utc-to-local-time-in-rails-3 by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 요세미티에 대한 작업에 루비 / 브루 / RVM을 얻으려면? (0) | 2020.02.22 |
---|---|
[RUBY-ON-RAILS] 어떻게 루비 레일에 응용 프로그램 이름을 변경하려면? (0) | 2020.02.22 |
[RUBY-ON-RAILS] 레일 관련 제로 has_many 기록과 기록을 찾을 [중복] (0) | 2020.02.22 |
[RUBY-ON-RAILS] 프로덕션 환경에서 레일 설치 태양 흑점 SOLR (0) | 2020.02.22 |
[RUBY-ON-RAILS] 레일에서 슬러그 (사람이 읽을 수있는 ID를) 생성하는 가장 좋은 방법은 (0) | 2020.02.22 |