let calendar = Calendar.current
var dateComponents = DateComponents()
dateComponents.weekday = calendar.firstWeekday
dateComponents.weekOfYear = 2
dateComponents.year = 2017
let startOfWeek = calendar.date(from: dateComponents)
let endOfWeek = calendar.date(byAdding: .day, value: 6, to: startOfWeek!)
let formatter = DateFormatter()
formatter.dateStyle = .short
print(formatter.string(from: startOfWeek!))
print(formatter.string(from: endOfWeek!))
Run Code Online (Sandbox Code Playgroud)
打印:
1/8/17
1/14/17
Run Code Online (Sandbox Code Playgroud)
改变代码:
dateComponents.weekOfYear = 1
dateComponents.year = 2017
Run Code Online (Sandbox Code Playgroud)
打印:
12/31/17
1/6/18
Run Code Online (Sandbox Code Playgroud)
为什么是12/31/17?
有谁告诉我?非常感谢.
当我使用.full样式打印日期时,我会在2017年12月31日星期日的第一个日期,但这显然是错误的,因为12月31日是星期四.
如果您想获得正确的日期,请使用yearForWeekOfYear而不是year.文件:
您可以将yearForWeekOfYear属性与weekOfYear和weekday属性一起使用,以获取与一年中给定周的特定工作日相对应的日期.例如,2005年第53周的第6天(ISO 2005-W53-6)对应于格里高利历的2005年1月1日星期六.
另外,你可能有点顽皮而不听文件并使用weekOfYear = 54:
let calendar = Calendar.current
var dateComponents = DateComponents()
dateComponents.weekday = calendar.firstWeekday
dateComponents.weekOfYear = 54
dateComponents.year = 2017
let startOfWeek = calendar.date(from: dateComponents)
let endOfWeek = calendar.date(byAdding: .day, value: 6, to: startOfWeek!)
let formatter = DateFormatter()
formatter.dateStyle = .short
print(formatter.string(from: startOfWeek!))
print(formatter.string(from: endOfWeek!))
Run Code Online (Sandbox Code Playgroud)
这打印:
1/1/17
1/7/17
Run Code Online (Sandbox Code Playgroud)
巧合的是,正确的日期.
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |