I wrote an extension Datethat returns the first day of the week for a given date (Mondays count on the first day). However, he continues to return one Monday too early. Here is my code:
extension Date {
func startOfWeek() -> Date {
var cal = Calendar.current
var component = cal.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)
cal.firstWeekday = 2
return cal.date(from: component)!
}
}
So, when I give him the following date:
let sampleDate = "2017-06-15 02:50:09 +0000"
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
if let date = formatter.date(from: sampleDate) {
print(date.startOfWeek())
}
}
2017-06-05 07:00:00 +0000 prints out.
Can someone help me figure out why my code returns a weekly date too soon?
source
share