2017-07-30 26 views
1

Weather APIからいくつかの結果が得られました。その1つは、エポックタイムスタンプの日付です。Date(timeIntervalSince1970 :)は2つの異なる結果を返します

私はDate(timeIntervalSince1970:)に変換するには、私は特定の番号使用しています右の日付

を得ることが判明 - >1501452000を、私は遊び場

1)Jul 31,2017,12:00AMの2の結果を得ることができます。 - とき - >let date = Date(timeIntervalSince1970: 1501452000)

2)2017-07-30 22:00:00 +0000 - >print(date)

APIの結果は以下のとおりです。彼らはAPIの結果の残りの部分と一致している私の結果の残りの部分をチェックして "time_epoch": 1501452000, "time": "2017-07-30 23:00",

.......しかし、1501452000 - >私は正しい時間23:00しかし22:00を取得しないでくださいに変換するとき!

何が起こっているのでしょうか? APIが間違っている(私はそうは思わない)か、それを変換しているか?

どうもありがとう

答えて

0

あなたのAPIがGMTにdate Sを送信するかもしれないがtimeIntervalSince1970初期化子は、UTCタイムゾーンの時刻を設定します。 print(data)を使用している場合は、DateオブジェクトのString形式を生成するためにDateFormatterを使用していない場合、Dateオブジェクトをフォーマットするときにデバイスの現在の設定が使用されるため、結果が異なります。

Dateオブジェクトは絶対的な時刻を表しますが、DateFormatterで印刷すると、相対的な位置/時間帯に変換されます。 APIのタイムゾーン設定と一致するようにDateFormatterを設定するだけで、日付が正しく表示されます。

+0

お返事ありがとうございます。出来た。あなたが言ったように、APIのタイムスタンプはGMTだったので、私はDateformatterを作らなければなりませんでした。 –

+0

うれしい私は助けることができます。私の答えが役に立つと分かったら、それを上書きすることを検討してください。 –

+1

私はデビッドに挑戦しましたが、私はここで新しいユーザーになって以来、私は15未満の評判を持っています!!!!!だから私は15歳になる。私は恥ずかしいheheheです!偉大な1つを持っている –

0

この問題は夏時間に発生します。この正確な日付にあなたの国は夏時間を変更していますか?遊び場で

0
  1. let date = Date(timeIntervalSince1970: 1501452000)あなたが右側にそれを参照してくださいお使いのシステムのタイムゾーンの時間を与える必要があります。

  2. あなたはそれを印刷し、2017-07-30 22:00:00 +0000を参照してください - これはGMT

で同じタイムスタンプでは、特定の時間帯を示すAPIですか? GMT + 1のように見えます

+0

APIから取得できる唯一のものは「日付」です:「Sun、2017年7月30日21:38:24 GMT」 –

+0

あなたの質問によると、APIの結果は「time_epoch」です:1501452000、 "time": "2017-07-30 23:00" –

関連する問題