我使用
计算两个日期之间的月和日差异- NSCalendar components:fromDateComponents:toDateComponents:options:
有趣的是,我在两天内得到了相同的结果:
2014-07-30
- 2015-07-20
:11个月20天2014-07-31
- 2015-07-20
:11个月20天要复制完整命令行程序的要点是:https://gist.github.com/p2/a1f7ad6acc9d555ee00b
相关部分:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
calendar.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSCalendarUnit flags = NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *rslt = nil;
// between 7/30/2014 and 7/20/2015: 11 months 21 days
NSDateComponents *later = [NSDateComponents new];
later.year = 2015;
later.month = 7;
later.day = 20;
NSDateComponents *earlier = [NSDateComponents new];
earlier.year = 2014;
earlier.month = 7;
earlier.day = 30;
rslt = [calendar components:flags fromDateComponents:earlier toDateComponents:later options:0];
// rslt.month is 11, rslt.day is 20
// between 7/31/2014 and 7/20/2015: 11 months 20 days
earlier.day = 31;
rslt = [calendar components:flags fromDateComponents:earlier toDateComponents:later options:0];
// rslt.month is 11, rslt.day is 20
任何人都可以解释发生了什么以及问题可能是什么?
答案 0 :(得分:0)
原来我是一个白痴,计算机再一次是正确的。感谢Rob指出显而易见的事实:
在这种情况下,2014-07-30的11个月是2015-06-30,2014-07-31的11个月也是2015-06-30。 (毕竟,你不希望它成为2015-07-01)。 此日期后20天是2015-07-20。
因此,2014-07-30和2015-07-31至2015-07-20的时间分别为11个月和20天。