快速获得一个月的第一天

Sno*_*oze 4 calendar swift

我正在寻找一种方法来获得一个月的第一天(在Swift中).我想知道它是星期一,星期二等......通过返回相应的数字.

我尝试了许多解决方案,例如获取NSCalendar组件.weekDay但没有人工作.

Example :

print(getTheFirstDate("2016-2-18"))

// Should return : 0 (because the first day of February 2016 is Monday).
Run Code Online (Sandbox Code Playgroud)

任何帮助将是欣赏.

Leo*_*bus 8

您需要首先将字符串转换为日期,然后您可以从该日期获得月份和年份组件,并使用NSCalendar方法dateFromComponents查找该月的第一天/日期.找到该日期后,您可以从中提取工作日日期组件.试试这样:

Xcode 8.2.1•Swift 3.0.2

extension Date {
    var weekday: Int {
        return Calendar.current.component(.weekday, from: self)
    }
    var firstDayOfTheMonth: Date {
        return Calendar.current.date(from: Calendar.current.dateComponents([.year,.month], from: self))!
    }
}
extension String {
    static var dateFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"
        return formatter
    }()

    var date: Date? {
        return String.dateFormatter.date(from: self)
    }
}

"2016-2-18".date?.firstDayOfTheMonth.weekday   // 2 = Monday (Sunday-Saturday 1-7)
Run Code Online (Sandbox Code Playgroud)
extension NSDate {
    var weekday: Int {
        return NSCalendar.currentCalendar().component(.Weekday, fromDate: self)
    }
    var firstDayOfTheMonth: NSDate! {
       return  NSCalendar.currentCalendar().dateFromComponents(NSCalendar.currentCalendar().components([.Year,.Month], fromDate: self))
    }
}
extension String {
    var date: NSDate? {
        struct Date {
            static var formatter: NSDateFormatter = {
                let formatter = NSDateFormatter()
                formatter.dateFormat = "yyyy-MM-dd"
                return formatter
            }()
        }
        return Date.formatter.dateFromString(self)
    }
}

"2016-2-18".date?.firstDayOfTheMonth.weekday   // 2 = Monday (Sunday-Saturday 1-7)
Run Code Online (Sandbox Code Playgroud)