如何使UIDatePicker成为一个24小时系统



我有一个UIDatePicker,它设置为小时分钟,然后是上午/下午。我该如何将其设置为像英国那样的24小时系统?例如,1是13,不会有AM或PM。

var datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.Time
datePicker.locale = NSLocale(localeIdentifier: "en_GB") // using Great Britain for this example

使用Swift 4

我使用了以下方法来帮助我实现一个没有AM/PM的时间选择器。

注意,我使用TextField作为Inputview

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    showTimePicker()
    return true
}
func showTimePicker() {
    timePicker.datePickerMode = .time
    timePicker.locale = Locale(identifier: "en_GB") // Change to your locale
    let toolbar = UIToolbar();
    toolbar.sizeToFit()
    let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(doneTimePicker));
    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelTimePicker));
    toolbar.setItems([doneButton,spaceButton,cancelButton], animated: false)
    modifiedHoursTextField.inputAccessoryView = toolbar
    modifiedHoursTextField.inputView = timePicker
}
 @objc func doneTimePicker() {
    let timeFormatter = DateFormatter()
    timeFormatter.dateFormat = "HH:mm"
    modifiedHoursTextField.text = timeFormatter.string(from: timePicker.date)
    self.view.endEditing(true)
}
@objc func cancelTimePicker() {
    self.view.endEditing(true)
}

日航的回答有好处,如果你也想选择"日期",你可以使用下面的东西:

viewDidLoad

deadlineTF.inputView = deadlineDatePicker
deadlineDatePicker.timeZone = NSTimeZone.local
deadlineDatePicker.datePickerMode = UIDatePickerMode.dateAndTime
deadlineDatePicker.locale = Locale(identifier: "tr_TR")
deadlineDatePicker.backgroundColor = UIColor.white
deadlineDatePicker.layer.cornerRadius = 5.0
deadlineDatePicker.layer.shadowOpacity = 0.5
deadlineDatePicker.addTarget(self, action: #selector(onDidChangeDate), for: .valueChanged)

功能:

// called when the date picker called.
@objc func onDidChangeDate(sender: UIDatePicker){
    // date format
    let myDateFormatter: DateFormatter = DateFormatter()
    myDateFormatter.dateFormat = "dd/MM/yyyy  HH:mm"
    // get the date string applied date format
    let mySelectedDate = myDateFormatter.string(from: sender.date)
    deadlineTF.text = mySelectedDate
}

最新更新