gpt4 book ai didi

ios - 从 weekOfYear 获取不正确的开始和结束日期

转载 作者:IT王子 更新时间:2023-10-29 05:50:50 25 4
gpt4 key购买 nike

当我运行这段代码时:

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!))

它打印这个:

1/8/17
1/14/17

当我将代码更改为:

dateComponents.weekOfYear = 1
dateComponents.year = 2017

它打印这个:

12/31/17
1/6/18

为什么是 12/31/17?

最佳答案

当我使用 .full 样式打印日期时,第一个日期是 2017 年 12 月 31 日,星期日,但这显然是错误的,因为 12 月 31 日是星期四。

如果您想获得正确的日期,请使用 yearForWeekOfYear 而不是 yearDocs :

You can use the yearForWeekOfYear property with the weekOfYear and weekday properties to get the date corresponding to a particular weekday of a given week of a year. For example, the 6th day of the 53rd week of the year 2005 (ISO 2005-W53-6) corresponds to Sat 1 January 2005 on the Gregorian calendar.

或者,您可以调皮一点,不听文档并使用 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!))

这打印:

1/1/17
1/7/17

巧合的是,正确的日期。

关于ios - 从 weekOfYear 获取不正确的开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com