NSDateComponents returns week 53 on 1/1/1970
So when extracting the dates components from NSDate object using NSCalendar and NSDateComponents I encountered a weird behavior.
If the date is 0 sec from 1970 the week component will return 53.
Is there an explination for this or a way to fix other than the obvious way of modulus 52?

here is the code you can run on your machine to test:

-

     (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]);
    	
    }

and here is the output:


    31/12/1969 week: 53
    (gdb) po date
    1970-01-01 00:00:00 +0000
    (gdb) 
NSDateComponents returns week 53 on 1/1/1970
===

So when extracting the dates components from NSDate object using NSCalendar and NSDateComponents I encountered a weird behavior.
If the date is 0 sec from 1970 the week component will return 53.
Is there an explination for this or a way to fix other than the obvious way of modulus 52?

here is the code you can run on your machine to test:

-

     (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]);
    	
    }

and here is the output:


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