どういうことか
QiitaのAPIを使って取得した "2021-01-01T00:00:00+09:00" こんな感じのISO8601形式のString(Date型ではない)を「2021年01月01日」みたいな文字列に整形して表示したい。
変換する
この記事では DateUtil
という変換するクラスを作成した。
String → Date → String という整形をしている。
DateUtil.swift
import Foundation
class DateUtil {
static func setupEnUsPosixFormatter() -> DateFormatter {
let formatter = DateFormatter()
// 端末設定によって書式が変わらない保証があるen_US_POSIXを指定
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}
// APIから取得した日付を表示用に変換する
static func dateStringConverter(string: String) -> String {
let formatter = DateUtil.setupEnUsPosixFormatter()
// APIから取得したStringがISO8601形式のため、それに合わせる必要がある
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
guard let date = formatter.date(from: string) else { return "" }
// 表示用に変換する
formatter.dateFormat = "yyyy年MM月dd日"
return formatter.string(from: date)
}
}
あとはこのクラスに値を渡して返してもらうだけ。
以下はtableViewのセルに配置したLabelにQiitaAPIから取得した updated_at
を表示している。
ViewController.swift
cell.dateLabel.text = DateUtil.dateStringConverter(string: article.updated_at)
おわり(´・ω・`)