如何将 UIDatePicker 更改为特定时间(在代码中)
How to change UIDatePicker to a specific time (in code)
我需要将 UIDatePicker 动态更改为特定的。
我的日期选择器仅设置为时间模式。
我可以用
设置时间
timePicker.setDate(NSDate(), animated: false)
但我不知道如何将它更改为不同的时间而不是
当前时间。
那我要怎么改呢?
谢谢
你可以这样使用它
timePicker.setDate(NSDate(timeInterval: 60, sinceDate: NSDate()), animated: false)
或
timePicker.setDate(NSDate(timeIntervalSinceNow: 60), animated: false)
它会将日期设置为与当前日期相差 1 分钟。
您可以通过以下方式格式化日期和时间来自定义它:
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)
您必须更改 时间,您可以使用 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)
要将日期选择(仅限时间)设置为特定时间,例如“09:00”,我会像这样设置 NSDateComponents 和选择器。
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.hour = 9
components.minute = 0
timePicker.setDate(calendar.dateFromComponents(components)!, animated: true)
如果您不想每次从字符串中输入日期或时间时都键入多行代码
你可以复制下面的函数并用作
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)!
}
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)
我需要将 UIDatePicker 动态更改为特定的。
我的日期选择器仅设置为时间模式。 我可以用
设置时间timePicker.setDate(NSDate(), animated: false)
但我不知道如何将它更改为不同的时间而不是 当前时间。
那我要怎么改呢?
谢谢
你可以这样使用它
timePicker.setDate(NSDate(timeInterval: 60, sinceDate: NSDate()), animated: false)
或
timePicker.setDate(NSDate(timeIntervalSinceNow: 60), animated: false)
它会将日期设置为与当前日期相差 1 分钟。
您可以通过以下方式格式化日期和时间来自定义它:
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)
您必须更改 时间,您可以使用 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)
要将日期选择(仅限时间)设置为特定时间,例如“09:00”,我会像这样设置 NSDateComponents 和选择器。
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.hour = 9
components.minute = 0
timePicker.setDate(calendar.dateFromComponents(components)!, animated: true)
如果您不想每次从字符串中输入日期或时间时都键入多行代码 你可以复制下面的函数并用作
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)!
}
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)