我正在整理一个每周都有锦标赛的游戏,每周都有不同的游戏特殊奖励。
为了完成这项工作,我需要知道它是哪一周所以我可以选择正确的奖金,并确保得分能够进入正确的锦标赛。
一个简单的答案是采用自纪元以来的天数,偏移到星期一,然后计算天数并除以7.显然这是因为闰年而失败。
另一种选择是弄清楚你一年中的哪一周,但是当你从一年过渡到下一年时,这会变得很奇怪。此外,比赛在周日结束时结束,因此不会遵循正常的周边界。
我准备开始做一些相当复杂的事情,使用年份,星期几和星期几来试图找出答案,但我想我会问这里,以防有一个简单的解决方案,我失踪了。
这将在iOS上的Objective-C中完成。
答案 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天。