Я пытаюсь использовать NSDatePicker, чтобы установить время, когда должно произойти событие. К сожалению, однако, этот элемент управления используется для установки полной даты, и поэтому возможно, что когда мне придется использовать значение, оно принадлежит прошлому. Моя цель - использовать DatePicker для установки времени в будущем.

Чтобы создать будущую дату, сохраняющую это время, я попытался установить цикл, который добавляет день, пока мы не достигнем будущей точки, но это кажется очень дорогим с точки зрения времени и обработки, или я попытался построить дату вручную используя только время. К сожалению, я не думаю, что нашел жизнеспособное решение из-за недостатка опыта в этой области.
Вот код, который я использую:
// getting date value from a NSDatePicker
let date = myDatePicker.dateValue
// learn if the date is in future or in past
if date.timeIntervalSince(currentDate as Date).sign == FloatingPointSign.minus {
print("\(date) is in past") // update adding days to make it in future
// get the hour and minute from the date
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "HH:mm" // only hour and second
let timeString = timeFormatter.string(from: date as Date)
print("\(timeString)") // here I get "18:10" or "6:10 PM" based on system preferences (12 or 24)
// create a date in future that use this hours
} else {
// the date is already in future, just use it
...
}
Я нашел здесь несколько вопросов о переполнении стека, которые помогают мне лучше понять, как использовать NSDateFormatter, а также отличный онлайн-учебник http://www.knowstack.com/swift-nsdateformatter/. Я также нашел некоторые вопросы, которые похожи на мои, например: возвращает дату час в будущем и init] возвращает дату час в прошлом? но они мне не помогли.
Документация для разработчиков Apple:
NSDatePicker
NSDateFormatter