date
calendar
Swift
weekday

【swift 4】△年○月1日は何曜日か?がわかるアプリ

iOSでカレンダーアプリを作る場合、「△年○月1日は何曜日か?」を始めに求めなければいけません。カレンダーのレイアウトに関しては、いろんなサンプルが出ていますので、各月の1日が何曜日かがわかるシンプルなアプリを作ってみました。

weekdayOfFirstDay.gif

LabelをdateLabel
「<前月」をzengetsuButton、
「次月>」をjigetsuButtonとしました。

import UIKit

class ViewController: UIViewController {

    @IBOutlet var dateLabel:UILabel!
    @IBOutlet var zengetsuButton:UIButton!
    @IBOutlet var jigetsuButton:UIButton!

    let now = Date()
    var cal = Calendar.current
    let dateFormatter = DateFormatter()
    var components = DateComponents()

    override func viewDidLoad() {
        super.viewDidLoad()
        cal.locale = Locale(identifier: "ja")
        dateFormatter.locale = Locale(identifier: "ja_JP")
        dateFormatter.dateFormat = "yyyy年M月d日EEEE"
        components.year = cal.component(.year, from: now)
        components.month = cal.component(.month, from: now)
        components.day = 1
        calculation()
    }

    func calculation(){
        let firstDayOfMonth = cal.date(from: components)
        dateLabel.text = dateFormatter.string(from: firstDayOfMonth!)
    }

//<前月 を押した時のAction
    @IBAction func myActionZengetsu(){
        components.month = components.month! - 1
        calculation()
    }

//次月> を押した時のAction
    @IBAction func myActionJigetsu(){
        components.month = components.month! + 1
        calculation()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

実際に起動させると、年をまたいでも正確に1日の曜日が求められることが分かります。