swift - 快速找出下周的开始
问题描述
我尝试在用户所在的当前日历中找出下周的开始。我试过了
public func nextStartOfWeek() -> Date {
let next = Calendar.current.date(byAdding: .weekOfYear, value: 1, to: self)!
let components = Calendar.current.dateComponents([.yearForWeekOfYear, .weekOfYear], from: next)
return Calendar.current.nextDate(after: self, matching: components, matchingPolicy: .nextTime)!
}
在我的语言环境中,一周从星期一开始,运行配置文件的方案设置为它。不幸的是,这仍然导致星期天作为一周的开始。
我在操场上使用过这段代码
import Foundation
// let s = Date()
let c = Calendar.current
let customDate = DateComponents(calendar: c, timeZone: nil, era: nil, year: 2021, month: 06, day: 15, hour: 0, minute: 0, second: 0, nanosecond: nil, weekday: nil, weekdayOrdinal: nil, quarter: nil, weekOfMonth: nil, weekOfYear: nil, yearForWeekOfYear: nil)
let s = c.date(from: customDate)!
let next = Calendar.current.date(byAdding: .weekOfYear, value: 1, to: s)!
print("Next \(next)")
var components = c.dateComponents([.yearForWeekOfYear, .weekOfYear], from: next)
print("\(components)")
var startOfNextWeek = Calendar.current.nextDate(after: s, matching: components, matchingPolicy: .nextTime)
print("Start of next Week \(startOfNextWeek!)")
预计 2021-06-20 22:00:00(我是 UTC+2),不幸的是它是 2021-06-19。
有没有更好的方法来找出下周的开始?我的错误是什么(在代码或大脑中)?
解决方案
我通过替换 Calendar.current 让它工作(对于法国日历):
var calendar = Calendar(identifier: .gregorian)
calendar.locale = NSLocale(localeIdentifier: "fr_FR") as Locale
func nextStartOfWeek() -> Date {
let next = calendar.date(byAdding: .weekOfYear, value: 1, to: self)!
let components = calendar.dateComponents([.yearForWeekOfYear, .weekOfYear], from: next)
return calendar.nextDate(after: self, matching: components, matchingPolicy: .nextTime)!
}
推荐阅读
- amazon-web-services - JITP 证书不是使用 mbedTLS+ATECC608A 创建的(与 moquitto_pub 一起使用)
- ruby - 如何知道一个数字是大于还是小于一个范围?
- python - 在 Python 中从 wp 站点打印 json 内容?
- c++ - 修改自定义类型 Rcpp::List 对象
- haskell - 函数定义在函数 many 中有类型错误
- java - 源代码样式检查作为单元测试的一部分?
- spring-boot - Kotlin Map 类型和 JdbcTemplate.queryForMap() 的返回值
- java - 无法加载主类 (Java)
- javascript - 如何使用带有 foreach 循环的 javascript 呈现表格
- linux - Linux 帮助:如何将文件移动到基于 .txt 文件的文件夹中?