두 개의 다른 준비 서버에 배포 된 레일 응용 프로그램을 다른 시간대 (PDT 및 CDT)에서 테스트하는 중에이 문제가 발생했습니다. 두 서버에는 기본 UTC config.time_zone을 사용하는 레일이 있습니다. 다른 시간대 구성과는 별도로 두 서버의 시계가 올바르게 설정되어 있습니다. 다음은 레일 Time.zone 파싱이 예상대로 작동하지 않습니다.
내가 레일 콘솔에서 볼 것입니다 : 시스템 시간대 PDT하는 서버에Time.zone.parse("Mon May 28 2012 00:00:00 GMT-0700 (PDT)")
=> Mon, 28 May 2012 05:00:00 UTC +00:00
, 시스템 시간대 CDT하는 서버에
Time.zone.parse("Mon May 28 2012 00:00:00 GMT-0700 (PDT)")
=> Mon, 28 May 2012 07:00:00 UTC +00:00
문자열 Mon May 28 2012 00:00:00 GMT-0700 (PDT)
은 클라이언트가 보낸 임의의 날짜 - 시간 값입니다. 레일즈 params 컬렉션을 통해 들어오는 javascript Date 객체를 사용할 때 일반적으로 발생하는 시나리오입니다.
왜 두 결과가 다른가요? Time.zone.parse(identical_date_time_string)
? 나는 두 시스템에서 다음을 실행하면
는 올바른 결과가 나타납니다 : 나는 우분투, 루비 1.9.3-P125과 레일 3.2.3을 실행하는거야
"Mon May 28 2012 00:00:00 GMT-0700 (PDT)".to_time
=> 2012-05-28 07:00:00 UTC
.
이 날짜 문자열을 처리 할 수 ActiveSupport :: 시간대를 패치 관리 레일에 대한 문제 https://github.com/rails/rails/issues/5770 –
을 개설 할 방법입니다 여기서 형식을 지정하십시오. 코멘트에서 [here] (https://github.com/rails/rails/issues/5770#issuecomment-5010661) 패치를 찾을 수 있습니다. –
원래 커밋 된 문제가 레일즈에서 수정되었습니다. https://github.com/rails/rails/commit/005d910624bbfa724b638426a000c8074d4201a2 –