- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个显示当前月份的日历 View (Cocoa macOS 应用程序)。当我尝试计算给定日期的周数时,我会根据日历和区域设置得到不同的结果。
对于 2021 年 1 月 1 日,某些调用返回第 0 周
,其他调用返回第 1 周
:
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let jan2021 = formatter.date(from: "2021-01-01")!
var deCalendar = Calendar(identifier: .gregorian)
deCalendar.locale = Locale(identifier: "de_de")
var usCalendar = Calendar(identifier: .gregorian)
usCalendar.locale = Locale(identifier: "en_us")
var deIsoCalendar = Calendar(identifier: .iso8601)
deIsoCalendar.locale = Locale(identifier: "de_de")
var usIso = Calendar(identifier: .iso8601)
usIso.locale = Locale(identifier: "en_us")
deCalendar.component(.weekOfMonth, from: jan2021) // 0
deIsoCalendar.component(.weekOfMonth, from: jan2021) // 0
usCalendar.component(.weekOfMonth, from: jan2021) // 1 ??
usIso.component(.weekOfMonth, from: jan2021) // 0
2021 年 1 月 1 日是星期五,因此我预计“月份中的一周”为 0
(或 1
,具体取决于特定 API 是否为零 -是否基于)。
对于 2021 年 2 月 1 日(星期一),以上所有调用都会返回第 1 周
!
只是为了好玩,2021 年 1 月 31 日:美国/公历返回“第 6 周”,所有其他日历返回“第 4 周”。
错误?,功能?,我缺少什么?
供引用:
最佳答案
这取决于特定日历中的两件事:
第一周最小天数
第一周
如果您查看您使用的日历
deCalendar: minimumDaysInFirstWeek=4, firstWeekday=2
deIsoCalendar: minimumDaysInFirstWeek=4, firstWeekday=2
usCalendar: minimumDaysInFirstWeek=1, firstWeekday=1
usIso: minimumDaysInFirstWeek=4, firstWeekday=2
因此,3 个日历需要至少 4 天才能将其视为第一周,并且它们从星期一(美国语言环境中的第 2 天)开始。因此,每周 3 天不会被视为第一周。
日历 3 一周仅要求 1 天,因此即使 1 天也是一周。
关于Swift DateComponents weekOfMonth 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65094343/
我正在开发一个显示当前月份的日历 View (Cocoa macOS 应用程序)。当我尝试计算给定日期的周数时,我会根据日历和区域设置得到不同的结果。 对于 2021 年 1 月 1 日,某些调用返回
我正在开发一个显示当前月份的日历 View (Cocoa macOS 应用程序)。当我尝试计算给定日期的周数时,我会根据日历和区域设置得到不同的结果。 对于 2021 年 1 月 1 日,某些调用返回
在我的应用程序中,我必须设置每周提醒,以便在一周后的同一天/同一时间发出警报。我一直在使用 NSDateComponenents.week = 1 并将其添加到 NSDate,使用 NSCalenda
我是一名优秀的程序员,十分优秀!