1

そのため、NSCalendar と NSDateComponents を使用して NSDate オブジェクトから日付コンポーネントを抽出すると、奇妙な動作に遭遇しました。日付が 1970 年から 0 秒の場合、週のコンポーネントは 53 を返します。これについての説明、またはモジュラス 52 の明らかな方法以外の修正方法はありますか?

マシンで実行してテストできるコードは次のとおりです。

-

 (void)testDate {
    NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:0];
    NSDateComponents *comp = [cal components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSWeekCalendarUnit) fromDate:date];
    DLog(@"%d/%d/%d week: %d", [comp day],[comp month], [comp year], [comp week]);

}

出力は次のとおりです。

31/12/1969 week: 53
(gdb) po date
1970-01-01 00:00:00 +0000
(gdb) 
4

2 に答える 2

1

さて、私はこれを手に入れました、

2011-06-22 22:38:50.516 SmallTasks[23164:903] 1/1/1970 week: 1

ですから、あなたが得た結果には少し驚いていますが、1年が 365 日であることにはそれほど驚きweek: 53はありません。52 * 7 = 364そのためには、週が 1969 年の日曜日に始まることを期待していましたが、そうではありませんでした。

于 2011-06-22T17:13:00.650 に答える
0

あなたは私の友人がうるう週を発見しました。私は、数年前にいくつかのSQLレポートを作成して、これに出くわしました。

于 2011-06-22T16:11:28.103 に答える