计算自纪元以来的周数比天数/ 7更准确

时间:2014-01-17 21:09:43

标签: ios calendar epoch date-arithmetic

我正在整理一个每周都有锦标赛的游戏,每周都有不同的游戏特殊奖励。

为了完成这项工作,我需要知道它是哪一周所以我可以选择正确的奖金,并确保得分能够进入正确的锦标赛。

一个简单的答案是采用自纪元以来的天数,偏移到星期一,然后计算天数并除以7.显然这是因为闰年而失败。

另一种选择是弄清楚你一年中的哪一周,但是当你从一年过渡到下一年时,这会变得很奇怪。此外,比赛在周日结束时结束,因此不会遵循正常的周边界。

我准备开始做一些相当复杂的事情,使用年份,星期几和星期几来试图找出答案,但我想我会问这里,以防有一个简单的解决方案,我失踪了。

这将在iOS上的Objective-C中完成。

1 个答案:

答案 0 :(得分:1)

这应该有效:

// Choose any reference date which is a Monday:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *refComp = [[NSDateComponents alloc] init];
refComp.year = 1970;
refComp.month = 1;
refComp.day = 5;
NSDate *refDate = [cal dateFromComponents:refComp];

// Compute number of weeks between your date and the reference date:
NSDateComponents *comp = [cal components:NSCalendarUnitWeekOfYear fromDate:refDate toDate:yourDate options:0];
NSInteger weeks = comp.weekOfYear;

但是计算天数(从某个星期一开始)并除以7应该 给出相同的结果,因为无论闰年如何,每周都有7天。