Когда вы описываете исходный объект даты, вы теряете некоторую точность до секунды от исходного объекта - другими словами, -description
сбрасывает доли секунды и возвращает
Строковое представление получателя в международном формате YYYY-MM-DD HH:MM:SS ±HHMM
, где ±HHMM
представляет смещение часового пояса в часах и минутах от GMT
Когда вы создаете новый объект даты на основе описания, вы получаете его за целые секунды, потому что строка точно с точностью до секунды. Так что -isEqualToDate:
возвращает NO
, потому что между вашими двумя объектами даты есть доля доли секунды, к которой он чувствителен.
Этот метод обнаруживает разницу в секундах между датами. Если вы хотите сравнить даты с менее точной гранулярностью, используйте timeIntervalSinceDate:
для сравнения двух дат.
Таким образом, вместо этого вы сделаете что-то подобное (NSTimeInterval
мер в секундах):
if ([d timeIntervalSinceDate:dd] == 0) {
NSLog(@"Yay!");
}