【发布时间】:2019-07-23 03:00:19
【问题描述】:
我想得到一周的第一天和最后一天。但我的结果与苹果的文档不符: https://developer.apple.com/documentation/foundation/nsdatecomponents/1410442-weekday
这是我的功能:
func startAndEndDateOfWeek(weekOfYearWithYear: (week: Int,year: Int)) -> (start: Date, end: Date) {
var output = (start: Date.init(), end: Date.init())
let calendar = Calendar(identifier: .gregorian)
var firstDayComponents = DateComponents()
firstDayComponents.weekOfYear = weekOfYearWithYear.week
firstDayComponents.yearForWeekOfYear = weekOfYearWithYear.year
firstDayComponents.weekday = 1
let firstDay = calendar.date(from: firstDayComponents)
var lastDayComponents = DateComponents()
lastDayComponents.weekOfYear = weekOfYearWithYear.week
lastDayComponents.yearForWeekOfYear = weekOfYearWithYear.year
lastDayComponents.weekday = 2
let lastDay = calendar.date(from: lastDayComponents)
output = (start: firstDay!, end: lastDay!)
return output
}
.weekday = 2 -> 指向星期日而不是 0。
我也想要一整天而不是 16:00。
【问题讨论】:
-
Date始终以 UTC 格式打印 - 请参阅 stackoverflow.com/questions/39937019/…。您可能处于 GMT+8 时区。 -
好吧有道理,但你知道为什么用 dayComponents 创建日期不起作用吗?
标签: swift calendar nsdatecomponents