Swift 3 日付の取得
Swift 3 での日付を取得する方法を紹介する。
カレンダー、タイムゾーンを無視した特定の時点の取得
Dateクラスを使用して当日の日付時刻を取得することが出来る。
Date | init() 現在の日付と時刻に初期化された日付を返す |
init(timeIntervalSinceNow: 時間間隔(秒)) 現在の日付と時刻から所定の秒数で初期化された日付を返す |
216行目~219行目にあるtimeIntervalSinceNowには秒を与えている。
Date(timeIntervalSinceNow: 60*60*24)→60秒×60分×24=1日
Date(timeIntervalSinceNow: 86400)と与えても同様の結果が得れる
一日分の時間間隔(秒)を渡しているので明日の日付を取得できる。
日付の表現を変換する
DateFormatterクラスを使用して日付表現を変えることができる。
dateStyle、timeStyleプロパティに用意されている固定フォーマットを指定すればLocaleに応じて適切な表記に変更したものを生成できる。
固定フォーマット | 長め .full 標準 .midium 短め .short なし .none |
222~224行目でDateFormatterクラスを使用している。dateStyleプロパティにfull、timeStyleプロパティにnoneを与えている。表記形態は228、231行目でlocaleで設定したロケールに合わせて出力される。
Locale(identifier: “en_US”) 英語_アメリカ表記
Locale(identifier: “ja_JP”) 日本語_日本表記
オブジェクトの変換 | func date(from: String) 受信者の現在の設定を使用して解釈された、指定された文字列の日付表現 を返す。 |
229行目DateFormatterクラスの.string関数を使えば引数from:に与えた日付から設定スタイルとLocaleに合わせた日付を文字列で取得できる。
カスタムフォーマットの設定
234行目のように用意された書式以外にもユーザー定義書式を設定することが可能。この記述ルールはUNICODE LOCALE DATA MARKUP LANGUAGEのDate Format Patternsに準拠する。
dateFormat.dateFormat = “yyyy年MM月dd日 hh時mm分ss秒”
またDateFormatterオブジェクトの.date()を使えば238行目のように文字列からの日付作成が可能。
dateFormat.date(from: stringDate)!
日付の比較
242行目Date型はifステートメントを使って用意に比較することが出来る。
if today > yesterday{ }