2012-04-27 4 views
0

В моем приложении мне нужно сравнить три даты в одном цикле if-else. У меня есть дата начала, дата окончания и дата тестирования. То, что я хочу проверить, заключается в том, находится ли дата испытания между датой начала и датой окончания.Сравнение дат

if (testDate >= startDate && testDate <= endDate) { 

Если я устанавливаю STARTDATE на 25.04.2012 и ENDDATE в 24/04/2019 и testDate на 25/12/2013 код работает. Но если я установил startDate на 26/04/2000, а endDate - 24/04/2019, а testDate - 25/12/2013, код не будет работать. Что не так?

+1

что искали? – vikingosegundo

+0

Да, вы сравниваете адреса объектов. Вы должны использовать метод сравнения, поддерживаемый объектом. –

ответ

2

Даты можно сравнить таким образом. Однако сначала необходимо вызвать timeIntervalSince1970, чтобы преобразовать дату в значение целочисленного типа. В этом случае он дает числовое значение типа NSTimeInterval.

Другой вариант заключается в использовании метода compare:, вызываемого на объекте NSDate.

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

  • приемником и anotherDate точно равны друг другу, NSOrderedSame

  • Получатель позднее во времени, чем другой, NSOrderedDescending

  • Приемник ранее вовремя, чем другой, NSOrderedAscending.

3

Вы не можете сравнить объекты Objective-C с любыми булевыми операторами в C. Вы бы сравнили их адреса, не их значения.

Посмотрите на документацию для класса NSDate, в частности метод -compare:.