Как установить только время в переменной NSDate?
Я имею переменную NSDate и хотел бы изменить только время (дата не должна изменяться). Возможно ли это?
Например: интервал даты выбора пользователя в дате DatePicker (если это дата начала, я хотел бы установить время как 00:00:00, если оно закончится, я установил время как 23:59:59)
Спасибо всем за вашу помощь.
С уважением, Алекс.
Ответы
Ответ 1
Вы хотите использовать NSDateComponents.
NSDate *oldDate = datePicker.date; // Or however you get it.
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:unitFlags fromDate:oldDate];
comps.hour = 23;
comps.minute = 59;
comps.second = 59;
NSDate *newDate = [calendar dateFromComponents:comps];
Ответ 2
Объект NSDate
не может быть изменен.
Вы можете создать из него новый объект NSDate
. Взгляните на метод - (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
.
NSDate *newDate = [endDate dateByAddingTimeInterval:24.0f * 60.0f * 60.0f - 1.0f];
Ответ 3
Когда мне нужно только отслеживать время, я не использую NSDate или NSTimeInterval. Вместо этого я использую NSinteger и сохраняю "военное" время, то есть 0830 = 8:30 утра, 14:15 = 2:15 вечера.