如何在 swift 中获取所有星期的开始日期和结束日期
how to get year all weeks start date and end date in swift
我正在制作一个应用程序,我需要在当年的所有日子中获取一年中的几周。为此,我正在寻找类似于以下的结果
30 Dec - 05 Jan
06 Jan - 12 Jan
13 Jan - 19 Jan
.
.
.
28 Dec - 03 Jan
您可以在这个帖子中使用建议的扩展:
迭代周数,然后使用所需的格式化程序打印值:
let calendar = Calendar.current
let currentYear = calendar.component(.year, from: Date())
let lastDayOfTheYear = calendar.date(from: DateComponents(year: currentYear, month: 12, day: 31))
var currentDate = calendar.date(from: DateComponents(year: currentYear, month: 1, day: 1))
while currentDate! < lastDayOfTheYear! {
let startDay = currentDate!.startOfWeek!.formatted()
let endDay = currentDate!.endOfWeek!.formatted()
print("\(startDay) - \(endDay)")
currentDate = calendar.date(byAdding: .weekOfYear, value: 1, to: currentDate!)
}
extension Date {
func formatted() -> String {
let formatter = DateFormatter()
formatter.dateStyle = .long
return formatter.string(from: self)
}
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: 1, 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: 7, to: sunday)
}
}
打印:
December 30, 2019 - January 5, 2020
January 6, 2020 - January 12, 2020
...
December 21, 2020 - December 27, 2020
December 28, 2020 - January 3, 2021
我正在制作一个应用程序,我需要在当年的所有日子中获取一年中的几周。为此,我正在寻找类似于以下的结果
30 Dec - 05 Jan
06 Jan - 12 Jan
13 Jan - 19 Jan
.
.
.
28 Dec - 03 Jan
您可以在这个帖子中使用建议的扩展:
let calendar = Calendar.current
let currentYear = calendar.component(.year, from: Date())
let lastDayOfTheYear = calendar.date(from: DateComponents(year: currentYear, month: 12, day: 31))
var currentDate = calendar.date(from: DateComponents(year: currentYear, month: 1, day: 1))
while currentDate! < lastDayOfTheYear! {
let startDay = currentDate!.startOfWeek!.formatted()
let endDay = currentDate!.endOfWeek!.formatted()
print("\(startDay) - \(endDay)")
currentDate = calendar.date(byAdding: .weekOfYear, value: 1, to: currentDate!)
}
extension Date {
func formatted() -> String {
let formatter = DateFormatter()
formatter.dateStyle = .long
return formatter.string(from: self)
}
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: 1, 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: 7, to: sunday)
}
}
打印:
December 30, 2019 - January 5, 2020
January 6, 2020 - January 12, 2020
...
December 21, 2020 - December 27, 2020
December 28, 2020 - January 3, 2021