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

问题描述:

我在计算两个日期之间的日历周数。我使用下面的代码:为什么在使用NSCalendarUnitEra时,ordinalityOfUnit使用星期一作为一周的第一天?

[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它可以正常工作。有没有解决的办法? 我想我可以从两个日期中减去一天,但这似乎很hackie。

经过大量实验后,如果您确定所有日期都是GMT,并且您设置了cal timezone到GMT,它的工作原理与预期的一样。