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 週日付システム (週の番号付けシステム) が含まれています。各週は月曜日に始まり、その週の木曜日を含む年に関連付けられます (したがって、年が長い週末の金曜日から日曜日に始まる場合、週番号は 1 になります)。年始はその後になります)。たとえば、2004 年の第 1 週 (2004W01) は、2003 年 12 月 29 日月曜日から 2004 年 1 月 4 日日曜日まででした。これは、木曜日が 2004 年 1 月 1 日だったからです。これは、木曜日が 2005 年 1 月 6 日であり、2005 年の最初の木曜日であるためです。1 年の最大週数は 52 または 53 です (2004 年は 53 でした)。

ただし、一部の国では、番号付けシステムが ISO 標準とは異なります。

ウィキペディア

于 2012-09-15T09:40:03.067 に答える