Как пропустить время в NSDate? - PullRequest
5 голосов
/ 13 января 2012

Я хочу получить разницу между датами пропуска времени означает, что если одна дата - 13 января 2012 г. - 23:00, а другая - 14 января 2012 г. - 12:00, тогда разница должна составлять 1 день, а не 0 дней. Я имею в виду, что я хочу разницу междутолько дата, 14 января 2012 г. - 13 января 2012 г., время пропуска.Я знаю, что могу использовать NSDate api для вычисления разницы, но проблема в том, что он учитывает также и время. Поэтому я думал, что при вычислении разницы я пропущу время, но я не знаю, как пропустить время, потому что если я использую NSDateFormatter, он вернет строку, а не дату.Пожалуйста, помогите мне, что я могу сделать?

Заранее спасибо!

1 Ответ

7 голосов
/ 13 января 2012

Что вам нужно сделать, это сначала получить NSDateComponents каждой даты.Как только вы это сделаете, вы можете сравнить компонент «день», чтобы получить разницу.

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date1 = ....;
NSDate *date2 = ....;
NSDateComponents *comps1 = [cal components:NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:date1];
NSDateComponents *comps2 = [cal components:NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:date2];

date1 = [cal dateFromComponents:comps1];
date2 = [cal dateFromComponents:comps2];

NSDateComponents *diffComps = [cal components:NSDayCalendarUnit fromDate:date1 toDate:date2 options:0];

NSLog(@"Days diff = %d", diffComps.day);

API даты может быть немного странным, чтобы обернуть вашу голову, но как только вы это сделаете, он довольно мощный.1005 *

...