Какой самый быстрый способ определить время дня NSDate или отметку времени? - PullRequest
1 голос
/ 15 декабря 2009

Мне нужно отобразить дату и, если она не соответствует полуночи, время этой даты, используя NSDateFormatter. Вот как я сейчас проверяю, полночь ли это:

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

[CalendarUtil cal] возвращает статический объект, и никакие даты не имеют времени, более конкретного, чем минуты (то есть, оно всегда будет в минутах, + - 0 секунд).

Есть ли более практичный или более быстрый способ определить это?

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

хороший ответ 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))
{
    ...
}
0 голосов
/ 15 декабря 2009

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

Будь это быстрее или практичнее, я не знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...