次の問題があります。のは、私は、サーバーから次の形式で日時を含むいくつかの文字列を受け取ると仮定してみましょう:文字列からNSDateをUTCに変換せずに取得する方法
yyyy-MM-dd'T'HH:mm:ssxxxx
これは、サーバの日付時刻であると私はそれがあるように、アプリケーションでそれを表示したいと思います。私は、日付時刻を受け取るのであれば:
04.07.2017 10:29:23
が、私は変換しようとするたびに:
2017-04-07T10:29:23+ 02:00
それがサーバー上で10:29:23 (08:29:23 UTC)
であると私は、アプリケーションでそれを表示したいということを意味します文字列をNSDateに変換します。サーバーのタイムゾーンに関する情報が失われるため、日付がUTCに変換されます。これは望ましくありません。今すぐ次のコードを使用します。
let formatter = NSDateFormatter()
formatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
let date = formatter.dateFromString(dateString)
Swift(2.3)でどのように達成できますか?
ありがとうございます。
コードは正しいです。日付を 'print'すると、UTCを取得します。遊び場で試してみてください。 2つのメモ: 'xxxx'は' Z'で置き換えることができ、日付文字列ではプラス記号とマイナス記号とタイムゾーン値の間にスペース文字を入れてはいけません。 – vadian
お返事ありがとうございます。はい、私はそれが私にUTCを与えることを知っていますが、私が上に書いたように、私はこれを望んでいません。私はそれを受け取ったので、サーバーの日時を表示したい。だからサーバー上の時刻が10:00(UTC 8:00)の場合は、アプリケーションに10:00(アプリケーションのタイムゾーンとは関係なく)も表示したいと考えています。 – smq93
タイムゾーンを無視する場合は、日付文字列からタイムゾーン情報を削除する必要があります(たとえば、 'replaceOccurrencesOfString'と' RegularExpression'オプションを使用)。 – vadian