簡體   English   中英

確定NSDate或時間戳記的時間的最快方法是什么?

[英]What's the fastest way to determine the time of day of an NSDate or timestamp?

我需要顯示一個日期,如果不代表午夜,則需要使用NSDateFormatter顯示該日期的時間。 這是我目前正在檢查是否為午夜的方式:

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

[CalendarUtil cal]返回一個靜態對象,並且日期沒有比分鍾更具體的時間(也就是說,它將始終是分鍾,即0秒)。

有沒有更實際或更快捷的方法來確定這一點?

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))
{
    ...
}

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)) {
  ...
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM