2015/11/13

RSSで取得したpubDateをNSDateFormatterで変換(Swift)

ロケールが日本語の時に上手く日付を取得できなかったので、残しておく。
Wed, 04 Nov 2015 15:02:11 +0000
上記のような書式の日付を
11月04日(水)
に変更します。

        // string = "Wed, 04 Nov 2015 15:02:11 +0000"
        let identifier = NSLocale.currentLocale().localeIdentifier

        if identifier == "ja_JP" {
            let dateFormatter = NSDateFormatter()
            // 書式が変わらない固定ロケールで一度値を取得
            dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
            dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss ZZZZ"
            let r_date = dateFormatter.dateFromString(string!)

            if let d = r_date {
                 // ロケールを日本語にして曜日を取得
                dateFormatter.locale = NSLocale(localeIdentifier: "ja_JP") 
                dateFormatter.dateFormat = "MM月dd日(E)"
                tmpEntry.addObject(dateFormatter.stringFromDate(d))
            }
        }
        // 日本語以外
        else{

        }
localeIdentifierを一度en_US_POSIXにするのがポイント。

参考

NSDateFormatterの使い方まとめ
http://qiita.com/gonsee/items/d3fb641914d2ca45e858
Swiftで現在日時を取得し、独自のフォーマットで出力する方法
http://qiita.com/cotrpepe/items/261833c465af5d70f867