概要
アプリにおいて日付や時間の表示はだいたいやるので
その時に毎回どうやるんだっけ?とならないように備忘録です。
DateFormatterについて
日付、時間表示をするためにはDateFormatterを利用する。
生成について
ただ、このDateFormatterは生成コストが実は高いのでTableViewのCell上で毎回初期化するのはあまり適切ではない。
なので初期化は1度だけ行い、あとはその初期化したインスタンスを使い回し必要に応じてdataFormatを変えると良いです。
localeの設定について
localeは基本的にen_US_POSIXを指定しておくと良いと思います。
これは、localeによってユーザーが自ら西暦/和暦や24時間表示/非24時間表示の設定によって取得されるデータが変わってしまうことがあります。
ex_US_POSIXを指定しておけばユーザーの環境によって表示が崩れることはなくなります。
ただ、曜日の表示をしたい時にはこれだとうまくいかないパターンもあるので、その際には別のlocaleを当てます。
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)"