我需要动态地将UIDatePicker更改为特定时间。
我的日期选择器仅设置为时间模式。 我可以使用
timePicker.setDate(NSDate(), animated: false)
但是我不知道如何将其更改为不同的时间,而不是当前时间。
那么我该如何更改呢?
谢谢
我需要动态地将UIDatePicker更改为特定时间。
我的日期选择器仅设置为时间模式。 我可以使用
timePicker.setDate(NSDate(), animated: false)
但是我不知道如何将其更改为不同的时间,而不是当前时间。
那么我该如何更改呢?
谢谢
NSDateComponents
并将修改后的日期设置为你的 DatePicker
。var calendar:NSCalendar = NSCalendar.currentCalendar()
let components = calendar.components(NSCalendarUnit.HourCalendarUnit | NSCalendarUnit.MinuteCalendarUnit, fromDate: NSDate())
components.hour = 5
components.minute = 50
datePicker.setDate(calendar.dateFromComponents(components)!, animated: true)
Swift 3和4:
extension UIDatePicker {
func setDate(from string: String, format: String, animated: Bool = true) {
let formater = DateFormatter()
formater.dateFormat = format
let date = formater.date(from: string) ?? Date()
setDate(date, animated: animated)
}
}
使用方法:
datePicker.setDate(from: "1/1/2000 10:10:00", format: "dd/MM/yyyy HH:mm:ss")
Swift 5
let calendar = Calendar.current
var components = DateComponents()
components.hour = 5
components.minute = 50
timePicker.setDate(calendar.date(from: components)!, animated: false)
要将日期选择器(仅时间)设置为特定时间,例如“09:00”,我将设置NSDateComponents和选择器如下。
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.hour = 9
components.minute = 0
timePicker.setDate(calendar.dateFromComponents(components)!, animated: true)
let dateString = "12-11-2015 10:50:00"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
let date = dateFormatter.dateFromString(dateString)
timePicker.setDate(date, animated: false)
timePicker.setDate(NSDate(timeInterval: 60, sinceDate: NSDate()), animated: false)
timePicker.setDate(NSDate(timeIntervalSinceNow: 60), animated: false)
它会将日期与当前日期相差1分钟。
如果您不想每次从字符串中获取日期或时间时都要键入多行代码,您可以复制以下函数并使用它
let DateVar = DateTimeFrmSrgFnc("31/12/1990",FmtSrg: "dd/MM/yyyy")
timePicker.setDate(DateVar, animated: false)
func DateTimeFrmSrgFnc(DateSrgPsgVar: String, FmtSrg FmtSrgPsgVar: String)-> NSDate
{
// Format: "dd-MM-yyyy HH:mm:ss"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = FmtSrgPsgVar
return dateFormatter.dateFromString(DateSrgPsgVar)!
}
UIDatePicker
处于仅时间模式,请不要这样做。原因是,想象一下上面的代码在2021年3月14日纽约执行。如果代码尝试更改小时=2,则会非常错误。由于夏令时的缘故,在2021年3月14日没有2点钟。正确的方法是硬编码一个没有夏令时的时区,如GMT,以便用户可以在没有上述问题的情况下读取/写入仅时间信息到DatePicker中。 - Cheok Yan Cheng