日历不正确.weekday swift 3.1

时间:2017-06-08 07:39:37

标签: swift swift3

我试图获得给定日期对象的工作日。但它总是返回+1值。 例如:如果我给出的日期为:2017-06-01 18:30:00 +0000

它返回工作日6 - >星期五 它应该是工作日5 - >周四

我的代码:

let calendar = Calendar.current
        let day: Int = calendar.component(.weekday, from: self.month!)
        print ("---------")
        print(self.month!)
        print (day)
        switch day {
        case 1:print("Sunday")
        case 2:print("Monday")
        case 3:print("Tuesday")
        case 4:print("Wednesday")
        case 5:print("Thursday")
        case 6:print("Friday")
        case 7:print("Saturday")
        default:
            break
        }

控制台上的输出:(我已经给出了两个错误的日期)

---------
2016-01-01 18:30:00 +0000
7
Saturday
---------
2017-06-01 18:30:00 +0000
6
Friday

我犯了错误...... 谢谢。

1 个答案:

答案 0 :(得分:0)

从我的角度来看,创建扩展名为Date,使用起来更为明确:

extension Date {
    func weekday() -> Int? {
        return Calendar.current.dateComponents([.weekday], from: self).weekday
    }
}

print(Date().weekday()!)

示例:

let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssZ"
let date = dateFormatter.date(from: "2017-06-01 18:30:00 +0000")

print(date?.weekday()!) //5 In Ukraine