NSDate имеет функцию isEqualToDate :.так что то, что вы пытаетесь сделать, может быть сделано:
[datea isEqualToDate:dateb];
также имеется функция Compare:, которая возвращает порядок дат.
edit: I'm nowПомните, что это не отвечает на ваш вопрос о том, почему дни возвращают разные значения, если они установлены одинаково.Сожалею!это все еще может помочь сделать ваш код немного чище.