1
-(NSInteger)getTheUltimateWeekOfAYear:(NSInteger)year
{
    NSDateComponents *comps = [NSDateComponents alloc];
    [comps setDay:31];
    [comps setMonth:12];
    [comps  setYear:year];

    NSCalendar *usersCalendar =[[NSLocale currentLocale] objectForKey:NSLocaleCalendar];
    NSDate *date = [usersCalendar dateFromComponents:comps];

    NSDateComponents *weekComps =
    [usersCalendar components:NSWeekCalendarUnit fromDate:date];

    return [weekComps week];
}

`

嗨,这个片段在 iOS 5.1 模拟器上运行时错误地返回 1。我相信它应该返回 53。我做错了什么?顺便说一句,我的模拟器预设为公历。/约翰

4

1 回答 1

3

这取决于您的上下文。来自维基百科:

ISO 8601 包括 ISO 周日期系统,一个周编号系统 - 每周从星期一开始,并与包含该周星期四的年份相关联(因此,如果一年从周五至周日的长周末开始,则第一周年将在那之后开始)。例如,2004 年第 1 周 (2004W01) 从 2003 年 12 月 29 日星期一到 2004 年 1 月 4 日星期日,因为它的星期四是 2004 年 1 月 1 日,而 2005 年第 1 周 (2005W01) 从 2005 年 1 月 3 日星期一到 2005 年 1 月 9 日星期日,因为它的星期四是 2005 年 1 月 6 日,所以是 2005 年的第一个星期四。一年中最高的周数是 52 或 53(2004 年是 53)。

但是,在某些国家/地区,编号系统与 ISO 标准不同。

维基百科

于 2012-09-15T09:40:03.067 回答