DateFormatter Swift 3

时间:2017-11-21 01:58:25

标签: swift datetime datepicker formatting

所以我正在创建一个联系电话簿应用,我正在尝试让键盘显示为DateTimePicker

我让键盘在一段时间后工作但我似乎无法使格式化程序正常工作。

@IBOutlet weak var datetxt: UITextField!

var datepicker = UIDatePicker()


func createdatepicker() {
    datepicker.datePickerMode = .date

    let toolbar = UIToolbar()
    toolbar.sizeToFit()

    let donebutton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneac))
    toolbar.setItems([donebutton], animated: true)
    datetxt.inputAccessoryView = toolbar

    datetxt.inputView = datepicker

}

func doneac() {
    let Date = DateFormatter()
    Date.dateStyle = .short
    //Date.string(from: String)
    datetxt.text = "\(datepicker.date)"
    self.view.endEditing(true)
}

当我运行应用程序时,它会选择日期,但它也会在文本字段中显示时间。

2 个答案:

答案 0 :(得分:0)

您没有使用DateFormatterdatetxt.text = "\(datepicker.date)"只是将text设置为日期选择器日期的description(包括日期和时间)。但是你根本就没有使用格式化程序。

顺便说一下,我不会使用Date作为日期格式化程序的名称。通常会使用formatterdateFormatterDate只会引起与同名Swift类型的混淆。

因此,您可以这样做:

let formatter = DateFormatter()
formatter.dateStyle = .short
datetxt.text = formatter.string(from: datepicker.date)

答案 1 :(得分:-1)

在这里你可以使用格式化程序,你没有显示你使用的任何日期格式化程序

        //here is current date
        let date = Date()

        //formatter to return value as 21-11-2017
        let formatter = DateFormatter()
        formatter.dateFormat = "dd-MM-yyyy"

        //Date Output
        let result = formatter.string(from: date)

        //second formatter to return time format like 2:31 Am
        let formatter1 = DateFormatter()
        formatter1.dateFormat = "h:mm a"

        //Time Output
        let result1 = formatter1.string(from: date)

        //set values for example using label for reference 
        DateLabel.text = result
        TimeLabel.text = result1

        //actual output is as Follows:
        DateLabel = 21-11-2107
        TimeLabel = 9:54 AM