2012-04-07 3 views
3

두 개의 다른 준비 서버에 배포 된 레일 응용 프로그램을 다른 시간대 (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 

.

+1

이 날짜 문자열을 처리 할 수 ​​ActiveSupport :: 시간대를 패치 관리 레일에 대한 문제 https://github.com/rails/rails/issues/5770 –

+0

을 개설 할 방법입니다 여기서 형식을 지정하십시오. 코멘트에서 [here] (https://github.com/rails/rails/issues/5770#issuecomment-5010661) 패치를 찾을 수 있습니다. –

+0

원래 커밋 된 문제가 레일즈에서 수정되었습니다. https://github.com/rails/rails/commit/005d910624bbfa724b638426a000c8074d4201a2 –

답변

0

ActiveSupportTimeZone.parse 주어진 문자열에서 표준 시간대 정보를 추출하지 않습니다. 단순히 날짜와 시간을 추출하여 주어진 (로컬) 시간대를 사용하여 TimeWithZone으로 변환합니다.

str.to_time은 "GMT-0700"라인을 주목하지만 시간대없이 시간을 생성합니다.

"GMT ....."부분을 추출하고이를 시간대와 비슷하지만 정확히 일치하지 않는 UTC 오프셋으로 변환하여 퍼지시킬 수 있습니다. 여기

+0

안녕하세요. Michael을 사용했을 때 동일한 날짜/시간 문자열이 올바르게 구문 분석되는 방식에 대한 자세한 내용을 추가했습니다. . "to_time"문자열에 대한 메소드. 그것은 일관되고 정확하게 작동합니다. –

0

내가 그것을

> Time.zone = "Hawaii" 
=> "Hawaii" 
> Time.zone.parse("Tue Mar 13 2012 13:00:00 GMT+1300 (NZDT)".sub("GMT","")) 
=> Mon, 12 Mar 2012 14:00:00 HST -10:00 
> Time.zone = "UTC" 
=> "UTC" 
> Time.zone.parse("Tue Mar 13 2012 13:00:00 GMT+1300 (NZDT)".sub("GMT","")) 
=> Tue, 13 Mar 2012 00:00:00 UTC 00:00 
+0

Joseph, 문제는 이제 레일로 수정되었습니다. https://github.com/rails/rails/commit/005d910624bbfa724b638426a000c8074d4201a2 –

+0

@ShyamHabarakada 팁을 보내 주셔서 감사합니다. 마침내 그들은 그것이 정렬되어 기쁘다 – JosephL

+0

당신은 환영한다. –

관련 문제