获取特定年份的给定月份的每一天

Kev*_*bbe 1 calendar date ios swift

是否可以从日历组件(Swift 3)中获取给定月份和年份的每一天的日期数组

目前我只是找到一种方法来计算天数,但仅此而已。

目的是开发我的自定义日历,但我陷入了这个阶段......

我正在尝试编写的扩展程序将如下所示:

extension Date 
{
    func getAllDays() -> [Date]
}
Run Code Online (Sandbox Code Playgroud)

或者这样的方法:

func getAllDays(month: Int, year: Int) -> [Date]
Run Code Online (Sandbox Code Playgroud)

Kev*_*bbe 11

最后我找到了一种方法:

extension Date
{    
    mutating func addDays(n: Int)
    {
        let cal = Calendar.current
        self = cal.date(byAdding: .day, value: n, to: self)!
    }

    func firstDayOfTheMonth() -> Date {
        return Calendar.current.date(from:
            Calendar.current.dateComponents([.year,.month], from: self))!
    }

    func getAllDays() -> [Date]
    {
        var days = [Date]()

        let calendar = Calendar.current

        let range = calendar.range(of: .day, in: .month, for: self)!

        var day = firstDayOfTheMonth()

        for _ in 1...range.count
        {
            days.append(day)
            day.addDays(n: 1)
        }

        return days
    }
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

let allDays = Date().getAllDays()
Run Code Online (Sandbox Code Playgroud)

输出:

2017-06-01 22:00:00 +0000

2017-06-02 22:00:00 +0000

2017-06-03 22:00:00 +0000

2017-06-04 22:00:00 +0000

...

...

2017-06-30 22:00:00 +0000