iOS
Swift

Swiftで現在日時を取得し、様々なスタイルで出力する方法

More than 1 year has passed since last update.

開発環境

  • Xcode 6 Beta
  • Mac OS X 10.9.3

実行環境

  • iOS Simulator (iPhone5s / iOS 8.0)

コード(USロケールの場合)

let now = NSDate() // 現在日時の取得
let dateFormatter = NSDateFormatter()

dateFormatter.locale = NSLocale(localeIdentifier: "en_US") // ロケールの設定

dateFormatter.timeStyle = .NoStyle // 時刻のスタイルの設定
dateFormatter.dateStyle = .NoStyle // 日付のスタイルの設定
println(dateFormatter.stringFromDate(now)) // -> 出力されない

dateFormatter.timeStyle = .ShortStyle
dateFormatter.dateStyle = .ShortStyle
println(dateFormatter.stringFromDate(now)) // -> 6/24/14, 11:01 AM

dateFormatter.timeStyle = .MediumStyle
dateFormatter.dateStyle = .MediumStyle
println(dateFormatter.stringFromDate(now)) // -> Jun 24, 2014, 11:01:31 AM

dateFormatter.timeStyle = .LongStyle
dateFormatter.dateStyle = .LongStyle
println(dateFormatter.stringFromDate(now)) // -> June 24, 2014 at 11:01:31 AM GMT+9

dateFormatter.timeStyle = .FullStyle
dateFormatter.dateStyle = .FullStyle
println(dateFormatter.stringFromDate(now)) // -> Tuesday, June 24, 2014 at 11:01:31 AM Japan Standard Time

dateFormatter.timeStyle = .NoStyle // 時刻だけ表示させない
dateFormatter.dateStyle = .FullStyle
println(dateFormatter.stringFromDate(now)) // -> Tuesday, June 24, 2014

コード(JPロケールの場合)

let now = NSDate() // 現在日時の取得
let dateFormatter = NSDateFormatter()

dateFormatter.locale = NSLocale(localeIdentifier: "ja_JP") // ロケールの設定

dateFormatter.timeStyle = .NoStyle // 時刻のスタイルの設定
dateFormatter.dateStyle = .NoStyle // 日付のスタイルの設定
println(dateFormatter.stringFromDate(now)) // -> 出力されない

dateFormatter.timeStyle = .ShortStyle
dateFormatter.dateStyle = .ShortStyle
println(dateFormatter.stringFromDate(now)) // -> 2014/06/24 11:14

dateFormatter.timeStyle = .MediumStyle
dateFormatter.dateStyle = .MediumStyle
println(dateFormatter.stringFromDate(now)) // -> 2014/06/24 11:14:17

dateFormatter.timeStyle = .LongStyle
dateFormatter.dateStyle = .LongStyle
println(dateFormatter.stringFromDate(now)) // -> 2014年6月24日 11:14:17 JST

dateFormatter.timeStyle = .FullStyle
dateFormatter.dateStyle = .FullStyle
println(dateFormatter.stringFromDate(now)) // -> 2014年6月24日火曜日 11時14分17秒 日本標準時

dateFormatter.timeStyle = .NoStyle // 時刻だけ表示させない
dateFormatter.dateStyle = .FullStyle
println(dateFormatter.stringFromDate(now)) // -> 2014年6月24日火曜日

enumの省略記法

  • .NoStyle
  • .ShortStyle

などは、enumの省略記法で書いている。

本来は、enum型である「NSDateFormatterStyle」を先頭に付けて、

  • NSDateFormatterStyle.NoStyle
  • NSDateFormatterStyle.ShortStyle

と書く。

ただし、今回は、代入先であるNSDateFormatterクラスのインスタンスの

  • timeStyleプロパティ
  • dateStyleプロパティ

が、NSDateFormatterStyle型で宣言されているため、「NSDateFormatterStyle」部分を省略することができる。

参考文献

Foundation Framework Reference - NSDate

Foundation Framework Reference - NSDateFormatter

The Swift Programming Language - Enumerations