为啥在使用 NSCalendarUnitEra 时 ordinalityOfUnit 使用星期一作为一周的第一天?

Posted

技术标签:

【中文标题】为啥在使用 NSCalendarUnitEra 时 ordinalityOfUnit 使用星期一作为一周的第一天?【英文标题】:Why does ordinalityOfUnit use Monday as the first day of the week when using NSCalendarUnitEra?为什么在使用 NSCalendarUnitEra 时 ordinalityOfUnit 使用星期一作为一周的第一天? 【发布时间】:2017-01-16 18:04:08 【问题描述】:

我正在尝试计算两个日期之间的日历周数。我正在使用以下代码:

[cal ordinalityOfUnit:NSCalendarUnitWeekOfYear inUnit:NSCalendarUnitEra forDate:thenDate];
[cal ordinalityOfUnit:NSCalendarUnitWeekOfYear inUnit:NSCalendarUnitEra forDate:nowDate];

日期 15-1-2017(星期日)产生 105192 周,而日期 16-1-2017(星期一)产生 105193。这表明它使用星期一作为一周的第一天。我已经验证 cal.firstWeekday 是 1。如果我将 inUnitNSCalendarUnitEra 更改为 NSCalendarUnitYear 它可以正常工作。有没有解决的办法? 我想我可以从两个日期中减去一天,但这似乎很老套。

【问题讨论】:

【参考方案1】:

经过大量试验,如果您确保所有日期都以 GMT 为单位,并将cal timeZone 设置为 GMT,那么它可以正常工作。

【讨论】:

以上是关于为啥在使用 NSCalendarUnitEra 时 ordinalityOfUnit 使用星期一作为一周的第一天?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在使用 CAGradientLayer 时应用会崩溃

为啥在使用情节提要时反复调用 AwakeFromNib?

为啥在使用自适应查询执行时要使用广播时火花洗牌

为啥在创建部分关系(组合)时使用嵌套类型

MySQL:为啥在使用索引时仍然“使用文件排序”?

AngularJS:为啥在说“服务”时使用“工厂”?