【发布时间】:2018-09-28 01:58:02
【问题描述】:
只有当我按下特定日期时,我才需要获取当月一周的所有日期。例如,如果我按 9 月 28 日,结果将是 9 月 23 日至 28 日的日期,但如果我按 9 月 30 日,结果将仅为 9 月 30 日,因为之后的日期是 10 月。
这是我获取一周日期的代码:
extension Date {
var startOfWeek: Date? {
let gregorian = Calendar(identifier: .gregorian)
guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)) else { return nil }
return gregorian.date(byAdding: .day, value: 0, to: sunday)
}
var endOfWeek: Date? {
let gregorian = Calendar(identifier: .gregorian)
guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)) else { return nil }
return gregorian.date(byAdding: .day, value: 6, to: sunday)
}
}
但是对于这段代码,结果是 9 月 30 日 - 10 月 6 日,这不是我想要的。请帮忙
【问题讨论】:
-
请记住,您的逻辑还需要处理不同语言环境中一周的不同开始日期。对于从星期一开始一周的语言环境,您希望 2018 年 9 月 30 日的日期为 9 月 24 日至 30 日。
-
感谢您的提醒,但这将有一个固定的语言环境。