ios - Bug in dateByAddingTimeInterval -


after going crazy searching code failed ... able isolated strange behaviour. @ hapens when substracting -200 days


nsdate *now = [nsdate date]; //now 2013-07-19  nsdateformatter *format = [[nsdateformatter alloc] init]; [format setdateformat:@"yyyy-mm-dd"];  nsdate *newdate1 = [now  datebyaddingtimeinterval:60*60*24*-199]; newdatetmp=[format stringfromdate:newdate1]; nslog(@"now:%@ newdatetmp:%@",now,newdatetmp);  newdate1 = [now  datebyaddingtimeinterval:60*60*24*-200]; newdatetmp=[format stringfromdate:newdate1]; nslog(@"now:%@ newdatetmp:%@",now,newdatetmp);  newdate1 = [now  datebyaddingtimeinterval:60*60*24*-201]; newdatetmp=[format stringfromdate:newdate1]; nslog(@"now:%@ newdatetmp:%@",now,newdatetmp);  newdate1 = [now  datebyaddingtimeinterval:60*60*24*-365]; newdatetmp=[format stringfromdate:newdate1]; nslog(@"now:%@ newdatetmp:%@",now,newdatetmp); 

logs:

2013-07-19 15:58:46.123 vendes[2927:907] now:2013-07-19 13:58:46 +0000 newdatetmp:2013-01-01 // ok

2013-07-19 15:58:46.124 vendes[2927:907] now:2013-07-19 13:58:46 +0000 newdatetmp:2013-12-31 // incorrect!!!! @ year

2013-07-19 15:58:46.125 vendes[2927:907] now:2013-07-19 13:58:46 +0000 newdatetmp:2012-12-30 // ok

2013-07-19 15:58:46.127 vendes[2927:907] now:2013-07-19 13:58:46 +0000 newdatetmp:2012-07-19 // ok


i guess hapopen tomorrow substracting 201 .. ?? :)

any idea?

thks

ps. solved using

nsdate *newdate1= [nsdate datewithtimeinterval:60*60*daystoadd sincedate:now]; 

that works daystoadd value.

it not bug. format use wrong. should be

@"yyyy-mm-dd" 

with lower-cased y


more information on upper-cased y :

y - year (in "week of year" based calendars). year designation used in iso year-week calendar defined iso 8601, can used in non-gregorian based calendar systems week date processing desired. may not same value calendar year.


Comments