Search code examples
iosswiftuitextfieldnsdateformatter

I want to display placeholder date as current date


I'm using date picker and when I open by default it will be the current date. But now I want to display placeholder date also as current date.

private func showDatePicker(_ sender: UITextField){
    datePickerView.datePickerMode = UIDatePicker.Mode.date
    sender.inputView = datePickerView
    let toolbar = UIToolbar();
    toolbar.sizeToFit()
    let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(donedatePicker));
    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelDatePicker));
    toolbar.setItems([doneButton,spaceButton,cancelButton], animated: false) sender.inputAccessoryView = toolbar sender.inputView = datePickerView;
}

@objc func donedatePicker(){
    let formatter = DateFormatter()
    formatter.dateFormat = "dd/MM/yy"
    if (selectedDateField == 1){
        datePickerView.minimumDate = NSDate() as Date
        sOdateTxt.text = formatter.string(from:datePickerView.date)
        sOdateTxt.placeholder=formatter.string(from:datePickerView.date)
    } else if (selectedDateField == 2){
        datePickerView.minimumDate = NSDate() as Date
        sRdateTxt.text = formatter.string(from:datePickerView.date)
    } else if (selectedDateField == 3){
        datePickerView.minimumDate = NSDate() as Date
        sRecordedTxt.text = formatter.string(from:datePickerView.date)
    }
    self.view.endEditing(true)
}
@objc func cancelDatePicker(){
    self.view.endEditing(true)
}

placeholder date should be as the current date


Solution

  • Set placeholder for the textfields in viewDidLoad method with current date using Date()

    override func viewDidLoad() {
        super.viewDidLoad()
        formatter.dateFormat = "dd/MM/yy"
        sOdateTxt.placeholder = formatter.string(from: Date())
        sRdateTxt.text = formatter.string(from: Date())
        sRecordedTxt.text = formatter.string(from: Date())
    }
    

    You don't need to use NSDate() as Date to get current date. You can use Date()