Относительное форматирование даты, вывод за прошлые даты? - PullRequest
6 голосов
/ 19 августа 2011

Я использую -[NSDateFormatter setDoesRelativeDateFormatting:], чтобы представить даты как «Сегодня» или «Вчера».Я только смотрю на даты в прошлом, но мне любопытно, какие варианты я бы увидел, локализованные для Великобритании.

Просто

  • «Сегодня»
  • «Вчера»

или что-то более запутанное, например

  • «Позавчера»

Перечислены ли возможные результаты где угодно, чтобы я мог получить представлениеместа на экране, необходимого для их правильного отображения?

1 Ответ

8 голосов
/ 19 августа 2011

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

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        NSDateFormatter * formatter = [[NSDateFormatter  alloc] init];
        [formatter setDateStyle:NSDateFormatterFullStyle];
        [formatter setDoesRelativeDateFormatting:YES];

        NSCalendar * cal = [[NSLocale currentLocale] objectForKey:NSLocaleCalendar];
        NSDateComponents * minusOneDay = [[NSDateComponents alloc] init];
        [minusOneDay setDay:-1];
        NSDate * today = [NSDate date];
        NSDate * date = [NSDate date];

        while( 1 > [[cal components:NSYearCalendarUnit fromDate:date toDate:today options:0] year] ){

            NSLog(@"%@", [formatter stringFromDate:date]);
            date = [cal dateByAddingComponents:minusOneDay
                                        toDate:date
                                       options:0];
        }

    }
    return 0;
}

В моей локали список выглядит просто как «Завтра», «Сегодня» и «Вчера».

...