2011-10-09 27 views
1

某些東西沒有加起來。如何計算將來日期之前的天數?

我需要知道有多少天都在那裏,直到2012年12月21日

NSDateFormatter *df= [[NSDateFormatter alloc] init]; 

NSDate *today = [[NSDate alloc] initWithTimeIntervalSinceNow:0]; 
NSDate *dec21 = [[NSDate alloc] init]; 

dec21 = [df dateFromString:@"2012-12-21"]; 

NSCalendar *gregorian = [[NSCalendar alloc] 
         initWithCalendarIdentifier:NSGregorianCalendar]; 


NSUInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit; 

NSDateComponents *components = [gregorian components:unitFlags 
              fromDate:today 
               toDate:dec21 options:0]; 
NSInteger days = [components day]; 
NSInteger months = [components month]; 

NSString *result = [[NSString alloc] initWithFormat:@"About %d months and %d days left", months, days]; 

此代碼表明仍有剩餘129個月。

我在想什麼?

+0

這是mayan,與你搞砸。 – jrturton

+0

在C#中它會是int days =(dec21 - date).TotalDays; – Casperah

+0

@jrturton顯然 – JAM

回答

0

您的日期格式化程序沒有設置格式,所以它沒有返回12月21日的NSDate。添加以下行已創建的格式化後:

df.dateFormat = @"yyyy-MM-dd"; 

而你設置,直到你的下一個問題,這是現在的結果說:

大約2個月和11天了

您還需要包括年份,並將其添加到月份數字中以獲得實際剩餘時間,如果您只計算在幾個月和幾天內。

+0

年翻譯爲「2147483647」。所有這些似乎過於複雜。這是最簡單的Obj-C給我們的嗎? – JAM

+0

對不起,我在答案中犯了一個錯誤。日期格式錯誤。你在這一年得到的價值看起來不正確,你是否在單位標誌中包含了「NSYearCalendarUnit」? – jrturton

相關問題