0

当我尝试获取从现在到年底的日期差异时,我得到的月份为 0。我正在使用一个NSCalendar对象来获取两个对象之间的差异NSDate

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2013];
[comps setMonth:0];
[comps setDay:0];

[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *newDate = [calendar dateFromComponents:comps];

NSDateComponents *timeDifference = [[NSCalendar currentCalendar] 
    components: NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | 
                NSMinuteCalendarUnit | NSSecondCalendarUnit  
    fromDate:[NSDate date] toDate:newDate options:0];

int months = timeDifference.month;
int days = timeDifference.day;
if (months>0)
    days+=31;
int hours = timeDifference.hour;
int minutes = timeDifference.minute;
int seconds = timeDifference.second; 
4

1 回答 1

0

您正在尝试计算到 2013 年的月数、天数等NSDateComponents​​。0 表示“无值”,所有计数的值都应大于 0。这就是为什么您的comps值被视为“不完整”,这会导致奇怪的输出从NSCalendar.

设置monthday在第 3-4 行到第 1 行修复问题。

于 2012-11-05T14:29:33.537 回答