我对苹果的基础框架的日历的正确用法有点迷茫。
let calendar = Calendar(identifier: .iso8601)
let dayComponent = DateComponents(year: 2019, weekday: 1, weekOfYear: 6)
let date = calendar.date(from: dayComponent)
我需要一年的某一周的第一天。当使用下列日期上面的代码依赖于平日给出:
//weekday:
//0 -> 08 FEB
//1 -> 09 FEB
//2 -> 03 FEB
//3 -> 04 FEB
//4 -> 05 FEB
为什么增加时,平日在本周(6),同时切换至5周从0开始?
谢谢你的帮助。
一对夫妇的意见:
range(of:in:for:)
,maximumRange(of:)
等,找到可能的值的范围。.iso8601
,“太阳报”为1,“星期一”是2,等等。weekOfYear
,您使用yearForWeekOfYear
:
let calendar = Calendar(identifier: .iso8601)
let firstOfWeek = DateComponents(calendar: calendar, weekOfYear: 6, yearForWeekOfYear: 2019).date!
let weekdays = calendar.range(of: .weekday, in: .weekOfYear, for: firstOfWeek)!
let daysOfTheWeek = Dictionary(uniqueKeysWithValues: zip(weekdays, calendar.weekdaySymbols))
for weekday in weekdays {
let date = DateComponents(calendar: calendar, weekday: weekday, weekOfYear: 6, yearForWeekOfYear: 2019).date!
print("The", daysOfTheWeek[weekday]!, "in the 6th week of 2019 is", formatter.string(from: date))
}
这导致:
太阳在2019年第6周是星期天,2019年2月10,
孟在2019年第6周是星期一,2019年2月4,
在星期二在2019年第6周是星期二,2019 2月5日,
在星期三在2019年第6周是星期三,2019年2月6,
在周四的2019年第6周是星期四,2019年2月7,
在周五的2019年第6周是周五,2019年2月8,
国家税务总局在2019年第6周是星期六,2019年2月9日
这实际上是你的代码做,为什么你没有看到你所期望的。let calendar = Calendar(identifier: .iso8601)
let startOfWeek = DateComponents(calendar: calendar, weekOfYear: 6, yearForWeekOfYear: 2019).date!
for offset in 0 ..< 7 {
let date = calendar.date(byAdding: .day, value: offset, to: startOfWeek)!
print(offset, "->", formatter.string(from: date))
}
这导致:
0 - >周一,2019年2月4,
1 - >周二,2019年2月5,
2 - >周三,2019年2月6日
3 - >星期四,2019年2月7
4 - >周五,2019年2月8日
5 - >周六,2019年2月9日
6 - >周日,2019年2月10,let startOfWeek = DateComponents(calendar: calendar, weekOfYear: 6, yearForWeekOfYear: 2019).date!