バンコクや東京のような都市名しかない場合、都市[NSTimeZone timeZoneWithName:@"Asia/Tokyo"]
の前に大陸とスラッシュがある場所でタイムゾーンパラメータを指定するにはどうすればよい
ですか?
私はすでに試し[NSTimeZone timeZoneWithName:@"Tokyo"]
ました、それは動作しません。
バンコクや東京のような都市名しかない場合、都市[NSTimeZone timeZoneWithName:@"Asia/Tokyo"]
の前に大陸とスラッシュがある場所でタイムゾーンパラメータを指定するにはどうすればよい
ですか?
私はすでに試し[NSTimeZone timeZoneWithName:@"Tokyo"]
ました、それは動作しません。
回答ありがとうございますが、これらの都市名はRails "ActiveSupport::TimeZone"が使用する形式にすぎないようです。だから私はそれをマップし直す必要があります。マッピングはここにあります-> http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
Railsの「ActiveSupport::TimeZone」形式からiOSが使用する別の形式にタイムゾーンをマッピングします(例:「InternationalDate LineWest」=>「Pacific/Midway」、「MidwayIsland」=>「Pacific/ Midway」、「Samoa」 => "Pacific / Pago_Pago"、...)。
マッピングに簡単に使用できるNSDictionaryプロパティを含むplistファイルを作成しました。
編集: Rails 3.2の更新バージョン(使用例付き)(RJ Regenoldに感謝!)
すべてのタイムゾーン名のリストが表示されます。
NSLog(@"%@", [NSTimeZone knownTimeZoneNames]);
これがお役に立てば幸いです。
それらがすべてアジアにある場合は、次のようなものを使用してみませんか。
MYCITY=Tokyo
[NSTimeZone timeZoneWithName:@"Asia/$MYCITY"]
より多くの都市とタイムゾーンが必要な場合は、/ usr / share/zoneinfoにあるすべてのタイムゾーンに基づいて静的テキストリストファイルを作成できます。
次のテキストを使用してファイル「timezones.by.city.txt」を作成します。(ここで切り捨てられます。)
"Asia/Aden"
"Asia/Almaty"
"Asia/Amman"
"Asia/Anadyr"
"Asia/Aqtau"
"Asia/Aqtobe"
"Asia/Ashgabat"
"Asia/Ashkhabad"
"Asia/Baghdad"
"Asia/Bahrain"
"Asia/Baku"
"Asia/Bangkok"
"Asia/Beirut"
"Asia/Bishkek"
... etc.
"US/Alaska"
"US/Aleutian"
"US/Arizona"
"US/Central"
"US/Eastern"
"US/East-Indiana"
"US/Hawaii"
"US/Indiana-Starke"
"US/Michigan"
"US/Mountain"
"US/Pacific"
"US/Pacific-New"
"US/Samoa"
それで:
MYCITY=Bangkok
MYTZ=`grep "$MYCITY" ./timezones.by.city.txt`
[df setTimeZone:[NSTimeZone timeZoneWithName:@"$MYTZ"]]
NSArray *zones = [NSTimeZone knownTimeZoneNames];
システムでサポートされているタイムゾーンのすべてのセットを返します。
setTime
すでに試した以下のようにゾーン分割する必要があります。
[NSTimeZone timeZoneWithName:@"Asia/Tokyo"];
この種の問題を解決するには、 http://www.geonames.org/のデータセットやAPIが役立つ場合があります。膨大な数の場所に対応する正しいオルセンタイムゾーン(「アジア/東京」と呼ばれる)があり、データをダウンロードしてまとめるか、APIを使用して必要なものを取得できます。
NSString * TimeZoneName=[[NSTimeZone localTimeZone]name];