LoginSignup
4
2

More than 1 year has passed since last update.

【Swift】APIから取得した日付の文字列を整形した文字列にする

Last updated at Posted at 2021-11-30

どういうことか

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)

おわり(´・ω・`)

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2