Как проверить, какой это день недели (т. Е. Вт, пт?) И сравнить две даты NSD? - PullRequest
11 голосов
/ 25 февраля 2009

Я смотрю две, делаю две вещи:

  1. Проверьте, прошла ли неделя (в зависимости от дня недели)
  2. Проверьте, прошел ли день (на основе даты)

Я не уверен, что это лучший способ решить эту проблему, поскольку при сравнении двух NSDate (одна в 1/1/09 в 21:30 и другая в 1/2/09 в 00:30) я могу ' просто посмотрите, прошло ли 24 часа, так как в этом случае это не так. Я могу решить эту проблему, просто получив дату 1/1/09 от NSDate, но я не уверен, как это сделать, основываясь на документации и ссылках Google, которые я видел.

Что касается другого вопроса, я не знаю, как узнать, в какой день недели ему дается дата. Я бы хотел, чтобы 01.01.09 был вторник, понедельник и т. Д. Есть ли какая-нибудь библиотека, которая позволит вам рассчитать это? Это, очевидно, должно учитывать високосные годы и массу других вещей ... Может быть, для этого есть библиотека Objective-C?

Спасибо за любую помощь!

Ответы [ 2 ]

30 голосов
/ 25 февраля 2009

Вы можете использовать components:fromData: сообщение класса NSCalendar, чтобы получить отдельные компоненты даты:

// Sunday = 1, Saturday = 7
int weekday = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:theDate] weekday];

Чтобы сравнить две даты, просто используйте сообщение compare::

switch([date1 compare:date2])
{
case NSOrderedSame:       /* they are the same date */ break;
case NSOrderedAscending:  /* date1 precedes date2 */ break;
case NSOrderedDescending: /* date2 precedes date1 */ break;
}
13 голосов
/ 25 февраля 2009

Вы можете использовать NSDateComponents для этого:

unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:units fromDate:date];

тогда вы можете получить доступ к отдельным частям даты следующим образом:

[components year];
[components month];
[components day];

Или вы можете с помощью метода NSCalendar dateFromComponents создать новый объект NSDate и сравнить два объекта NSDate.

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