8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

日付、時間、曜日の表示

Last updated at Posted at 2017-11-17

概要

アプリにおいて日付や時間の表示はだいたいやるので
その時に毎回どうやるんだっけ?とならないように備忘録です。

DateFormatterについて

日付、時間表示をするためにはDateFormatterを利用する。

生成について

ただ、このDateFormatterは生成コストが実は高いのでTableViewのCell上で毎回初期化するのはあまり適切ではない。
なので初期化は1度だけ行い、あとはその初期化したインスタンスを使い回し必要に応じてdataFormatを変えると良いです。

localeの設定について

localeは基本的にen_US_POSIXを指定しておくと良いと思います。
これは、localeによってユーザーが自ら西暦/和暦や24時間表示/非24時間表示の設定によって取得されるデータが変わってしまうことがあります。
ex_US_POSIXを指定しておけばユーザーの環境によって表示が崩れることはなくなります。
ただ、曜日の表示をしたい時にはこれだとうまくいかないパターンもあるので、その際には別のlocaleを当てます。

Date.swift
public var dateFormatter: DateFormatter {
    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.timeZone = TimeZone(abbreviation: "JST")
    return dateFormatter
}

よくある日付、時刻表示のやり方

dateFormatの指定の仕方だけ書きます。

年を表示する

表示したい形式 = 2017年

dateFormatter.dateFormat = yyyy

日付を表示する

表示したい形式 = 11/17

dateFormatter.dateFormat = MM/dd

時間を表示する

表示したい形式 = 11:17

dateFormatter.dateFormat = HH:mm

曜日を表示する

表示したい形式 = 11/17(金)

(金)と日本語で出すのは、localeがen_US_POSIXだと実現できないのでその時はja_JPを指定しましょう

formatter.locale = Locale(identifier: "ja_JP")
formatter.dateFormat = "MM/dd(EEE)"
8
10
2

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
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?