現在の日付と曜日、現在時間を取得する


Swift4.1で現在の日付と曜日、現在時間を取得するサンプルコードです。
以下の形式の文字列で取得してくれます。

2018/04/03 (木)
19:03:34

上のような形式で取得するサンプルコードです。

Calendar.currentで取得すると、設定によっては和暦(平成〇〇年)で取得してしまう可能性があるので(2018/04/03が欲しいのに30/04/03が帰ってくる)、グレゴリオ暦で取得する方が無難です。
逆に和暦が欲しいときは和暦で取得する方法もあります。

このサイトが詳しいです。
Swift 3 の日時操作チートシート

その他参考にさせていただいたサイト
Swift3での日時に関する処理
【Swift3】現在時刻の取得とDataFormatterでの文字列化

import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
print(getDateString()) //2018/05/10 (木)
print(getDateString2()) //2018年5月10日
print(getTimeString()) //09:27:08
}
func getDateString() -> String {
let date = NSDate()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd"
let dateStr = formatter.string(from: date as Date)
//あまり良く無い例
/*
let cal = NSCalendar(calendarIdentifier: .gregorian)
let weeks = ["日","月","火","水","木","金","土"]
let comp = cal?.components(NSCalendar.Unit.weekday, from: date as Date)
let weekIdx = comp?.weekday
var weekStr = weeks[weekIdx! - 1]
*/
//ローカライズなどを考えてこっちを使おう!
formatter.locale = NSLocale(localeIdentifier: "ja_JP") as Locale?
formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "EEEEE", options: 0, locale: Locale.current)
let weekStr = formatter.string(from: date as Date)
return dateStr + " (" + weekStr + ")"
}
func getDateString2() -> String {
let date = NSDate()
let formatter = DateFormatter()
//あまり良く無い例
//formatter.dateFormat = "yyyy年MM月dd日"
//ローカライズなどを考えてこっちを使おう!
formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ydMMM", options: 0, locale: Locale(identifier: "ja_JP"))
return formatter.string(from: date as Date)
}
func getTimeString() -> String {
let date = NSDate()
let formatter = DateFormatter()
formatter.dateFormat = "HH:mm:ss"
return formatter.string(from: date as Date)
}
}