Как сравнить год с текущим годом в iPhone? - PullRequest
0 голосов
/ 20 апреля 2010

Я новичок в разработке для iPhone. Я анализирую URL-адрес XML и отображаю заголовок, дату и сводку в виде таблицы.

Я заметил, что некоторые даты были очень старыми, например "Ср, 31 декабря 1969 г. 19:00:00 -0500", поэтому я не хочу отображать даты, которые на 1 год старше текущего года. Как это сделать? Я использовал пример кода с этого сайта для анализа и отображения деталей.

Ответы [ 2 ]

3 голосов
/ 20 апреля 2010

Работа с датами (NSDate Class) - это довольно болезненная вещь, и она доставила мне много хлопот и гнева.

в основном у вас разные подходы:

1.) Получить компоненты с вашей даты и сравнить их с вашими контрольными датами .. это может выглядеть примерно так:

// учитывая, что у вас есть объект NSDate с именем dateOfSearch

unsigned int unitFlags = NSDayCalendarUnit|NSYearCalendarUnit;
NSDateComponents *comp; 


NSCalendar *calendar = [NSCalendar currentCalendar];


comp = [calendar components:unitFlags fromDate:dateOfSearch];
NSInteger *year = [comp year];

// year no содержит год, который содержится в объекте dateOfSearch. // обратите внимание: это базовый пример, показывающий, как извлечь год объекта NSDate

2.) Использовать NSDate timeReferenceSince1970 или другие «эквиваленты» для сравнения (проще)

Методы timeReference NSDate возвращают количество секунд между двумя referenceDates

так что хороший подход был бы

NSDate *today = [[NSDate alloc] init] //today
NSDate *pastDate = [self getPastDateFromWhereEver];
NSTimeInterval *difference =  [pastDate timeIntervalSinceDate:today];

if (разница <.....) </p>

надеюсь, что поможет

ура

2 голосов
/ 20 апреля 2010

в дополнение к ответу samsam, и после изучения вашего примера кода, вам необходимо преобразовать строку даты в объект NSDate:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSDate *myDate = [dateFormatter dateFromString:@"Wed, 31 Dec 1969 19:00:00 -0500"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...