2009-12-15 26 views
1

我有我的程序下面的代碼:是否 - [NSCalendar ordinalityOfUnit:inUnit:forDate:]不起作用?

NSUInteger currentMinuteOrdinal = [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit inUnit:NSEraCalendarUnit forDate:[NSDate date]]; 
NSUInteger passedInMinuteOrdinal = [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit inUnit:NSEraCalendarUnit forDate:passedInDate]; 
NSUInteger minuteDifference = currentMinuteOrdinal - passedInMinuteOrdinal; 

現在時間是今天下午6時09分。傳入時間是今天下午4:17。 (我正在查看調試器中的值,所以我知道這些值是正確的。)但是,這兩個序數值總是達到相同的值,使'minuteDifference'爲0.

此方法是否工作?還是我在做一些可怕的錯誤?

謝謝。

回答

2

你的代碼似乎爲我工作(我複製/粘貼),我不能看到你指定你如何處理passedInDate,我安裝日期:

NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; 

//NSDate * dateA = [NSDate date]; 
NSDate * dateA = [formatter dateFromString:@"2009-12-15 06:09:00 +1100"]; 
NSDate * dateB = [formatter dateFromString:@"2009-12-15 04:17:00 +1100"]; 

NSUInteger currentMinuteOrdinal = 
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit 
              inUnit:NSEraCalendarUnit 
              forDate:dateA];  // current 

NSUInteger passedInMinuteOrdinal = 
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit 
              inUnit:NSEraCalendarUnit 
              forDate:dateB];  // passed in 

NSUInteger minuteDifference = currentMinuteOrdinal - passedInMinuteOrdinal; 

NSLog(@" currentMinuteOrdinal: %d", currentMinuteOrdinal); 
NSLog(@"passedInMinuteOrdinal: %d", passedInMinuteOrdinal); 
NSLog(@"  minuteDifference: %d", minuteDifference); 

輸出在這種情況下:

2009-12-15 21:51:46.215 x[50036:903] currentMinuteOrdinal: 1056606130 
2009-12-15 21:51:46.216 x[50036:903] passedInMinuteOrdinal: 1056606018 
2009-12-15 21:51:46.217 x[50036:903]  minuteDifference: 112 
相關問題