По существу у меня есть функция чаевых с конкретными подсказками, связанными с датами, и мне нужен способ сравнить текущий NSDate
с сохраненной датой для подсказки, независимо от времени. Очевидно, что совет на 1 января актуальен в 10 утра и 10:30, поэтому я не могу буквально сравнить NSDates
. Вот некоторые из вещей, которые я пробовал:Сравнение NSDates без учета времени
Попробуйте 1 - Не работает
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];
NSInteger day = [components day];
NSInteger month = [components month];
NSInteger year = [components year];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
// [df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
Попробуйте 2 - Не работает
NSString * zoneString = [[NSString stringWithFormat:@"%i-%i-%iT00:00:00", year, month, day] substringFromIndex:([[NSString stringWithFormat:@"%i-%i-%iT00:00:00", year, month, day] length] - 5)];
NSTimeInterval timeInterval = [[zoneString substringToIndex:3] intValue] * 3600;
timeInterval += [[zoneString substringFromIndex:3] intValue] * 60;
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:timeInterval]];
[formatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss ZZZ"];
NSLog(@"%@", [formatter stringFromDate:myDate]);
Попробуйте 3 - Не работает
NSDate *date = [NSDate date];
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&date interval:NULL forDate:date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
if ([[dateFormat stringFromDate:date] isEqualToString:[dateFormat stringFromDate:tipDate]])
знакомства Gabriele в ниже. У меня есть аналогичное требование в приложении, чтобы проверить, произошло ли какое-либо событие (основанное на времени) в одну и ту же дату календаря, и это именно то, как я это делаю. Просто сравните по дате компоненты, соответствующие году, месяца и дня. – Bladebunny
Я проверил этот вопрос перед публикацией, и решения не работали. – Andrew