2013-10-04 15 views
22

電話があるタイムゾーン/国を教えてもらえますか?私は位置情報サービスを使用しないことを好むだろう。iPhoneからタイムゾーン/国を取得

この目的は、自動的に通話をルーティングすることです。ユーザーが米国にいる場合は、米国のコールセンターを呼び出すようにデフォルト設定する必要があります。ユーザーが別の国にいる場合は、コールセンターにデフォルト設定する必要があります。

ありがとうございます!

答えて

57

スルーに行くことです。あなたが大陸だけを気にしているように聞こえるので、それはあなたが必要とするすべてかもしれません。

さらに必要な場合:公式のタイムゾーンデータベースはhttp://www.iana.org/time-zonesで取得してください。 tzdata2013g.tar.gz(またはこれを読んでいるときにtzdataYYYYx.tar.gzの最新バージョンが何であれ)をダウンロードしてください。例えば、時間帯ごと緯度/経度を与えるzone.tabという名前のそのアーカイブ内のファイルがあります:

CH  +4723+00832  Europe/Zurich 

+4723+00832が示す緯度= +47º23" 、経度= +8º23" 。

更新:いくつかのケースでは(私はどのわからない)、タイムゾーン名はzone.tabに表示されていないUS/Pacificような古いスタイルの名前かもしれません。それらを処理するには、backwardというファイルも取得します。これは、古い名前を現在の名前に変換します。

zone.tabをあなたのアプリが使用できるものに変換するのはあなた次第です。結果はロケーションサービスと同じくらい正確なところにはありませんが、一般的な考えを示します。しかし、は保証されません。 2つの状況で失敗します。

  1. ユーザーは、[設定]でタイムゾーンを変更します。ほとんどのユーザーは、自分の電話機に時間とゾーンを自動的に設定させますが、誰もが設定することはできません。ユーザーがタイムゾーンを変更すると、正確なものではなく、必要なものを得ることができます。

  2. デバイスは正しいローカルタイムゾーンを特定できません。ネットワークの問題により、電話機が時間とゾーンを正確に設定できなくなる可能性があります。たとえば、ユーザーが飛行機で移動し、着陸するときにネットワークに問題がある場合、電話機は出発地からのタイムゾーンを表示することがあります。

+0

あなたは、zone.tabを使用するより簡単に国コードに変換できますか? – Alan

+0

これはわかりませんが、zone.tabはすでに使いやすいです。 –

1

更新:最後のコメントの後に回答を変更しています。

ジオロケーションを見つけるために電話機のIPを逆引きすることができます。 several rest APIs availableがあります。

これは、Appleがアプリケーションを拒否する可能性があるため、これをお勧めしないと言っています。

NSTimeZone *timeZone = [NSTimeZone localTimeZone]; 
NSString *tzName = [timeZone name]; 

を名前がAustralia/Sydney、またはEurope/Zurich、またはAmerica/Denverのようになります:安全な賭けは、あなたが使用してローカルタイムゾーンの名前を取得することができ、アップルが提供するlocation services

+0

これは、ユーザが自分のデバイスを設定しているロケールを与えているようです。ギリシャのパサンゴが米国に旅行する場合、これはギリシャ語 – AlexWien

+0

を配信します。Agreed @AlexWien –

1
NSTimeZone *timeZoneLocal = [NSTimeZone localTimeZone]; 
    NSString *strTimeZoneName = [timeZoneLocal name]; 

    or 

    NSTimeZone *timeZoneLocal = [NSTimeZone defaultTimeZone]; 
    NSString *strTimeZoneName = [timeZoneLocal name]; 
関連する問題