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


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

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

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

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

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

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

ViewController.swift

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)
    }
}