質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

7018閲覧

Swift4で文字列からDate型へのキャスト

RX450

総合スコア11

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/02/05 14:40

編集2018/02/06 00:09

Swift4でiOSアプリの開発をしています。

"yyyy-MM-dd'T'HH:mm:ssZZZZZ" の形式の文字列の日付情報を、
"yyyy年MM月dd日" の形式に変換したいのですが方法がわかりません。

Date型のformatはDateFormatter()を使用すると良いようですが、
"yyyy-MM-dd'T'HH:mm:ssZZZZZ"
の文字列を一旦Date型に変換した後、
"yyyy年MM月dd日"
の形式にformatして、文字列に変換するという方法を試しましたが、
"yyyy-MM-dd'T'HH:mm:ssZZZZZ"
をDate型に変換しようとする部分でnilになってしまいます。

どなたかご教授願います。

[追記]
申し訳ありません。
文字列形式は
"2017-12-03T14:33:30.000+09:00"
このような形で渡されていました。
この形式を
"yyyy年MM月dd日"
に変換したいですm(_ _)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/02/06 01:07

端末の設定にかかわらず "yyyy年MM月dd日" と表示したいのでしょうか?
RX450

2018/02/06 01:32

端末の言語設定が日本以外の場合は、"yyyy/MM/dd" で表示したいです。
fuzzball

2018/02/06 01:38

端末設定が和暦の場合でも西暦表示でいいのでしょうか?地域設定は無視ですか?
RX450

2018/02/06 01:44

すべて西暦表示で良いです。地域設定まで考えていませんでした。地域設定も対応した形でご教授いただけるとうれしいですm(_ _)m
guest

回答2

0

自己解決

文字列:"2017-12-03T14:33:30.000+09:00"
から
文字列:"2017年12月3日"
への変換は以下で実現できました。(言語設定や地域設定は無視しており、日本語・日本での使用のみを想定)

Swift4

1let formatter = DateFormatter() 2formatter.locale = Locale(identifier: "en_US_POSIX") 3formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ'" 4if let date = formatter.date(from: "2017-12-03T14:33:30.000+09:00") { 5 formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ydMMM", options: 0, locale: Locale(identifier: "ja_JP")) 6 let dateStr = formatter.string(from: date).description 7 print(dateStr) 8}

投稿2018/02/06 02:41

RX450

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

変換しようとしている日付が不正なのではないかと予想します。

swift

1 let formatter = DateFormatter() 2 formatter.locale = Locale(identifier: "en_US_POSIX") 3 formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" 4 let dateRFC3339 = formatter.date(from: "2018-04-10T01:00:55Z") 5 print(dateRFC3339!) // 2018-04-10 01:00:55 +0000 6 7 formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ydMMM", options: 0, locale: Locale(identifier: "ja_JP")) 8 let dateStr = formatter.string(from: dateRFC3339!).description 9 print(dateStr) // 2018年4月10日 10

おすすめ参考 【Swift】Dateの王道 【日付】

投稿2018/02/05 15:41

編集2018/02/05 15:42
fromageblanc

総合スコア2724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RX450

2018/02/06 00:34

申し訳ありません。 文字列形式は "2017-12-03T14:33:30.000+09:00" このような形で渡されていました。 この形式を "yyyy年MM月dd日" に変換したいですm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問