문제

내가 이해하는 것에서 전화하십시오

NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);

장치의 현지 시간대를 제공합니다. 그것이 내게주는 것은 "US/Central", 그리고 나는 약어 목록의 어느 곳에서나 그것을 찾을 수 없습니다. NSTIMEZONE 약어, 또는 시간대 이름 목록 NSTIMEZONE 알려진 TimezonEnames. 이 사람은 어디에서 오는가? 현재 장치 시간대를 Rails 앱으로 전달해야하며 다음과 같은 것을 이해합니다. "호주/시드니" 또는 "아메리카/시카고", 하지만 "US/Central".

LocalTimezone이 나에게 제공하는 것을 가져 와서 레일이 이해할 수있는 문자열로 변환하는 방법 (즉, 알려진 TimezOnenEnames의 시간대 추정된 시스템이 알고있는 모든 시간대 이름이 되려면?)

도움이 되었습니까?

해결책

당신은 사용하고있을 것입니다 ActiveSupport::TimeWithZone 필요없이 tzinfo 보석:

$ irb -rrubygems -ractivesupport -rtzinfo
>> Time.send(:get_zone, "US/Central").now
=> Tue, 17 Nov 2009 04:27:23 CST -06:00

필요하지 않은 경우 tzinfo, 당신은 상당히 쓸모없는 시간대의 하위 집합 만 얻을 수 있습니다.

편집하다: 혼란을 피하기 위해 내가 개인을 사용한 이유 Time#get_zone API는 전화 할 때 무대 뒤에서 사용되는 것이기 때문입니다. Time#zone=. 필요하지 않은 경우 tzinfo, 전화 Time.send(:get_zone, "US/Central") 보고 nil.

다른 팁

시뮬레이터 내에서 그것을 얻고 있습니까? 그렇다면 터미널에서 실행하면이 명령이 무엇을 반환합니까?
$ SystemsEtup -gettimezone

Mac OS 10.5의 시간대 설정 GUI는 TimeZones를 미국으로 설정합니다. 콘솔에서 수동으로 설정하면 예상 시간대 중 하나로 설정할 수 있습니다.

유효한 목록을 얻으려면 이것을 실행하고 미국/센트럴이 그들 중 하나가 아니라는 점에 주목하십시오.
$ SystemsEtup -ListTimezones

이것을 미국/시카고로 설정하려면 이것을 실행하십시오
$ SystemsEtup -Settimezone America/Chicago

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top