NSCalendar获取现在和年末之间的日期差异给出零月

时间:2012-11-05 12:37:47

标签: ios iphone-sdk-3.0 nsdate nscalendar nsdatecomponents

当我试图从现在到年底获得日期差异时,我的月份为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; 

1 个答案:

答案 0 :(得分:0)

您正在尝试计算到2013年的月数,天数等。在NSDateComponents 0表示“无值”,所有计数值应该大于0.这就是您{{1}的原因}值被视为'不完整',这会导致comps的奇怪输出。

在第3-4行中设置NSCalendarmonth可以解决问题。

相关问题