Я пытаюсь использовать 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
...
}
Я нашел несколько вопросов здесь, в Stack Overflow, которые помогают мне лучше понять, как использовать NSDateFormatter, а также отличный онлайн-учебник http://www.knowstack.com/swift-nsdateformatter/. Я также нашел несколько вопросов, похожих на мои, например: возвращает дату час в будущем и init] возвращает дату в час в прошлом? но они мне не помогли.
Документация для разработчиков Apple: NSDatePicker NSDateFormatter