我正在尝试使用 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] 返回过去一小时的日期?但他们没有帮助我。
苹果开发者文档: NSDatePicker NSDateFormatter