2009-12-15 57 views
1

我需要顯示日期,如果不是午夜,則使用NSDateFormatter顯示該日期的時間。這是我當前如何檢查,看看它的午夜:什麼是確定NSDate或時間戳的時間最快的方法?

int minute = [[CalendarUtil cal]ordinalityOfUnit:NSMinuteCalendarUnit 
              inUnit:NSDayCalendarUnit forDate:date]; 
if (minute == 1) { 
    //time is midnight 
} 

[CalendarUtil cal]返回一個靜態的對象,也沒有日期時間是以分鐘(也就是,它永遠是對的那一刻,更具體的+ - 0秒)。

有沒有確定這個更實用或更快速的方法?

回答

0

NSDate是免費電話橋接CFDateRef,你可以用它來獲取有關最新更多有用信息。你可以這樣做:

NSDate *date; 
CFDateRef dr = date; 
CFAbsoluteTime at = CFDateGetAbsoluteTime(dr); 
CFTimeZoneRef tr = [NSTimeZone localTimeZone]; 
CFGregorianDate gd = CFAbsoluteTimeGetGregorianDate(at, tr); 
if ((gd.hour == 0) && (gd.minute == 0) && gd.second == 0)) { 
    ... 
} 

無論是更快還是更實用,我都不知道。

1

chrisbtoo的回答是好。下面是完整起見另一種方法:

NSCalendar* calendar = [NSCalendar currentCalendar]; 
unsigned unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
NSDate* now = [NSDate date]; 
NSDateComponents* components = [calendar components:unitFlags fromDate:now]; 
if (([components hour] == 0) && ([components minute] == 0) && ([components second] == 0)) 
{ 
    ... 
} 
相關問題