Swiftの日時を表示するのはDateクラスで簡単に実装できます。
// 2018/01/12 00:00:00
print(Date())
しかしFormatを指定するとなると結構行数を使ってしまうんですよね。
let format = DateFormatter() format.timeStyle = .short format.dateStyle = .short format.locale = Locale(identifier: "ja_JP") // 2018/01/12 00:00 print(format.string(from: Date()))
Dateクラスを拡張する
毎回書くのは冗長ですし、表記を変えたいとなったときに死ぬのでDateクラスを拡張してしまいましょう。
import Foundation public extension Date { public func toString() -> String { let format = DateFormatter() format.timeStyle = .short format.dateStyle = .short format.locale = Locale(identifier: "ja_JP") return format.string(from: self) } }
これで楽になりました。.Net Frameworkが
// 2018/01/12 00:00:00
DateTime.Now.ToString();
と書けるように、今回拡張したことで
// 2018/01/12 00:00
Date().toString()
と書くことができるようになりました。
フォーマットを簡潔に指定できるように拡張する
そう思ってたら更に便利に拡張している人がいました。.Net Frameworkは下記のようにフォーマットを指定することができます。
// 2018/01/12 00:00 DateTime.Now.ToString("yyyy/MM/dd HH:mm")
Swiftもこれと同じように拡張したほうが利便性高いですね。
import Foundation public extension Date { func toString(format:String = "yyyy/MM/dd HH:mm:ss") -> String { let format = DateFormatter() format.dateFormat = format return format.string(from: self) } }
// 2018/01/12 00:00 Date().toString("yyyy/MM/dd HH:mm")
qiita.com
というか、標準のDateでこのくらい実装してくれていても良いと思うんですけどねえ…。