使用 NSCalendar 及其方法dateByAddingComponents:toDate:options:
,该方法有时会返回错误的值。即时:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:2013];
[components setMonth:2];
[components setDay:27];
NSDate *date = [calendar dateFromComponents:components];
NSLog(@"%@", date); // 2013-02-27
NSDateComponents *addingComponents = [[NSDateComponents alloc] init];
[addingComponents setMonth:1];
[addingComponents setDay:4]; // value 5 give the same result.
date = [calendar dateByAddingComponents:addingComponents toDate:date options:0];
NSLog(@"%@", date); // 2013-03-31
控制台log: 2013-02-27 and 2013-03-31
。
现在,如果将日期组件值更改为 5,该方法返回相同的值NSDate
,但如果更改为 6,则日期为 2013-04-01。
有人对这种行为有答案吗?提前感谢。
拉斐尔·克鲁兹·马尔克斯。