2012-11-05 25 views
0

當我嘗試從現在到年底獲得日期差異時,我得到的月份爲0。我使用NSCalendar對象來區分兩個NSDate對象。NSCalendar得到現在和年底之間的日期差異給出了一個零月

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; 

回答

0

你嘗試計算月數,天數等,以2013年在NSDateComponents 0表示「沒有價值」,即計算所有值應大於0。這就是爲什麼你comps值被認爲是更大作爲'不完整',這導致從NSCalendar奇怪的輸出。

設置monthday第3-4行至第1行修復此問題。

相關問題