user3421197
user3421197

Reputation:

How do you make UIDatePicker a 24 hour system

I have a UIDatePicker that is set to the hour the minutes then AM/PM. How do I make it so that it is set to the 24 hour system like in the UK? For example 1 would be 13 and there wouldn't be AM or PM.

Upvotes: 3

Views: 6038

Answers (3)

chirag90
chirag90

Reputation: 2240

Using Swift 4

I have used the following the method to help me achieve a time-picker without AM / PM.

Note i am using TextField as 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)
}

Upvotes: 1

Eray Alparslan
Eray Alparslan

Reputation: 814

Bonus to JAL's answer, if you also want to be able to pick "date", you can use something like below:

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)

.

The Function:

// 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
}

Upvotes: -2

JAL
JAL

Reputation: 42489

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

Upvotes: 7

Related Questions