Swift通过日历简单获取本月第一天周几以及本月天数的方法

685 阅读1分钟

1.获取本月第一天周几

func getWeekDay() -> Int {

        var calendar = Calendar.current

        calendar.firstWeekday = 1
        //获取第一天
        guard var startDay = calendar.dateInterval(of: .month, for: Date())?.start else{
            return 0
        }
        //修改为当前时区
        startDay = startDay.addingTimeInterval(TimeInterval(NSTimeZone.system.secondsFromGMT()))
        //获取weakday
        return (calendar.dateComponents([.weekday], from: startDay).weekday ?? 1) - 1

    }

2.获取本月天数

func getDayofMonth() -> Int{

        var calendar = Calendar.current

        calendar.firstWeekday = 1

        guard var endDay = calendar.dateInterval(of: .month, for: Date())?.end else {
            return 31
        }

        //转换会转为当前时区,只需减1处理

        endDay = endDay.addingTimeInterval(.init(-1))

        let dateformatter = DateFormatter()

        dateformatter.dateFormat = "dd"

        let days = dateformatter.string(from: endDay)

        return Int(days) ?? 31

    }