【Swift 5】StoryboardでUIDatePickerからUITextfieldへの出力【曜日も表示】

# 初めに
Swiftのstoryboardで、DatePickerを使うために色々と調べたため、それをここに備忘録としてまとめておきます。
私自身ガチの初心者のため、間違いなどあるかもしれませんがご了承下さい。
また、Qiitaも初投稿なので、至らぬ点があれば教えていただけるとありがたいです。
# 完成品
以下のような動きをさせます。
GIF貼り付けました。
![DatePicker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523827/bef00812-271d-7a5b-c7cb-6a3a9dde8d34.gif)
# 環境
動作環境は以下になります。
| MacOS | Xcode | Swift | Interface |
|:-:|:-:|:-:|:-:|
| 12.3  | 14.1 |  5.7.1  | storyboard  |
# ViewControllerと紐付け
textFieldをMain.storyboardのViewController上に配置して、outletで接続しておきます。
コードで言う、`@IBOutlet weak var dateTextField: UITextField!`の部分です。
# コード
大元のコードは、https://qiita.com/ryomaDsakamoto/items/ab4ae031706a8133f193 を参考にさせていただきましたが、うまくいかなかった点などもあるため、一部、改変したりしています。
主な改変ポイントは、以下の通りです。
* アプリの一部として作ったので、一部グローバル変数にしている点。
* Xcodeの仕様変更で、`datePicker.preferredDatePickerStyle = .wheels`を指定しないとドラムロールにならなくなったようなので、そのように設定した点。
* DateFormatterで、曜日も表示されるようにした点。
* 日本語で月日が指定されるように、Localeを設定した点。
```swift:ViewController.swift
import UIKit

let YEAR_TO_DATE = Date()
let DATE_FORMATTER = DateFormatter()
var DATE = ""

class ViewController: UIViewController {
    @IBOutlet weak var dateTextField: UITextField!
    //UIDatePickerを定義するための変数
    var datePicker: UIDatePicker = UIDatePicker()
    override func viewDidLoad() {
        super.viewDidLoad()
        // DateFormatter を使用して書式とロケールを指定する
        DATE_FORMATTER.locale = Locale(identifier: "ja_JP")//日本語にするため
        DATE_FORMATTER.dateFormat = "y年MM月dd日(EEEE)"//これは表示する形を設定
        DATE = DATE_FORMATTER.string(from: YEAR_TO_DATE)//最初に今日の日付を入れておく。
        dateTextField.text = DATE//曜日も表示
        // ピッカー設定
        datePicker.datePickerMode = UIDatePicker.Mode.date
        datePicker.timeZone = NSTimeZone.local
        datePicker.locale = Locale(identifier: "ja_JP")//日本語にするため
        datePicker.preferredDatePickerStyle = .wheels//ドラムロール
        dateTextField.inputView = datePicker
        // 決定バーの生成
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
        let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
        let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
        toolbar.setItems([spacelItem, doneItem], animated: true)
        // インプットビュー設定(紐づいているUITextfieldへ代入)
        dateTextField.inputView = datePicker
        dateTextField.inputAccessoryView = toolbar
    }
    // UIDatePickerのDoneを押したらTextFieldもそれに変わる。
    @objc func done() {
        dateTextField.endEditing(true)
        //(from: datePicker.date))を指定してあげることで
        //datePickerで指定した日付が表示される
        DATE = DATE_FORMATTER.string(from: datePicker.date)
        dateTextField.text = DATE
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
```
# 参考にした記事
以下の記事を参考にさせていただきました。（色々参考にしたので、漏れがあるかもしれません）
コードの主たる参考にした記事はこちらです。

https://qiita.com/ryomaDsakamoto/items/ab4ae031706a8133f193

現在日時を見るために参考にした記事はこちらです。

https://swift.hiros-dot.net/?p=856

曜日を指定するために参考にしたサイトです。
今回は、「◯曜日」と出したいので、EEEEとしています。

http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns

以下は、日本語の曜日を指定するために参考にしたサイトです。

https://qiita.com/kkoide1332/items/e491b6e0c2b676b0e89b#%E6%9B%9C%E6%97%A5%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B

# Qiita投稿にあたって参考にした記事
https://qiita.com/Qiita/items/c686397e4a0f4f11683d#headings---%E8%A6%8B%E5%87%BA%E3%81%97