sont2019/03/25 02:48コメントありがとうございます! 試しに以下のようにしてみましたが、どうもうまくいきません。 ============ let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'ZZZZZ'" let string = "2019-03-19T17:00:00+09:00" let date = dateFormatter.date(from: string) // => nil ============ dateがnilになってしまうようです。 末尾の"+09:00"の部分のFormatの表現方法がどうも不適切だったみたいです。 他にもいろいろ試してみましたがなかなかうまくいきません。。。
fuzzball2019/03/25 04:00あと、 dateFormatter.locale = Locale(identifier: "en_US_POSIX") これを追加しておかないと、端末設定が和暦や12時間表示になっているときに正しく変換されません。
sont2019/03/26 00:43ありがとうございます! 解決することができました! ================= let dateFormatter = DateFormatter() dateFormatter.locale = Locale(identifier: "en_US_POSIX") dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ" let string = "2019-03-19T17:00:00+09:00" let date = dateFormatter.date(from: string) let calendar = Calendar.current let comps = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second, .timeZone], from: date!) print(comps.year!) // -> 2019 print(comps.month!) // -> 3 print(comps.day!) // -> 19 print(comps.hour!) // -> 17 print(comps.minute!) // -> 0 print(comps.second!) // -> 0 print(comps.timeZone!) // -> Asia/Tokyo (current) =================
2019/03/25 02:48
2019/03/25 02:58
2019/03/25 04:00
2019/03/26 00:43