Как получить относительные даты - PullRequest
3 голосов
/ 21 марта 2011

как я могу получить относительные даты в Objective-C?

Если у меня есть «сегодня», как мне найти «вчера», «последнюю неделю», «последние две недели», «один месяц назад», «два месяца назад»?

1 Ответ

10 голосов
/ 21 марта 2011

Так что если у вас есть NSDate *today = [NSDate date];, то вы можете использовать NSDateComponents для получения относительных дат.

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];

NSDateComponents *yesterdayComponents = [[NSDateComponents alloc] init];
[yesterdayComponents setDay:-1];
NSDate *yesterday = [calendar dateByAddingComponents:yesterdayComponents toDate:today options:0];
[yesterdayComponents release];

NSDateComponents *twoWeeksAgoComponents = [[NSDateComponents alloc] init];
[twoWeeksAgoComponents setWeek:-2];
NSDate *twoWeeksAgo = [calendar dateByAddingComponents:twoWeeksAgoComponents toDate:today options:0];
[twoWeeksAgoComponents release];

И т.д.

NSDateComponentsи NSCalendar обрабатывает переполнение и переполнение автоматически (если вы не отключите его с помощью бита options:).Поэтому, если сегодня «28 февраля» и вы хотите «завтра», он автоматически выберет «29 февраля» или «1 марта» в зависимости от года.Это довольно круто.Это также единственный правильный способ манипулирования датой .

...