UIDatePicker的工作日

时间:2018-01-11 06:13:11

标签: ios swift nsdateformatter

我想设置我的dateField标签,以显示日期和工作日。目前它只显示日期。我试图遵循这个问题Displaying the Day Of The Week From Date Picker,但这不是我案例的解决方案。

enter image description here

 let picker = UIDatePicker()
func createDatePicker(){

    let toolbar = UIToolbar()
    toolbar.sizeToFit()

    let done = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))

    toolbar.setItems([done], animated: false)

    dateField.inputAccessoryView = toolbar
    dateField.inputView = picker
    picker.datePickerMode = .dateAndTime

}
 @objc func donePressed(){

    let formatter = DateFormatter()
    formatter.dateStyle = .medium
    formatter.timeStyle = .none
    let dateString = formatter.string(from: picker.date)


    dateField.text = "\(dateString)"
    showTime()
    self.view.endEditing(true)
}

   @objc func datePickerValueChanged(sender: UIDatePicker){
    let formatter = DateFormatter()
    formatter.dateStyle = DateFormatter.Style.medium
    formatter.timeStyle = DateFormatter.Style.none
    dateField.text = formatter.string(from: sender.date)

}
func showTime(){

    let formatter = DateFormatter()
    formatter.dateStyle = DateFormatter.Style.none
    formatter.timeStyle = DateFormatter.Style.short
    timeField.text = formatter.string(from: picker.date)

}

1 个答案:

答案 0 :(得分:0)

您的问题实际上只是关于如何格式化Date以显示中期日期格式加上工作日。

显示工作日的唯一标准日期样式是.full格式,但这不是您想要的。

一种解决方案是设置特定的dateFormat,例如yyyy-MM-dd, EEE,但您需要一种适合用户区域设置的格式。

以下将满足您的需求:

@objc func donePressed(){
    let formatter = DateFormatter()
    // MMMddyyyy is essentially the same as the "medium" format
    formatter.setLocalizedDateFormatFromTemplate("MMMddyyyyEEE")
    let dateString = formatter.string(from: picker.date)

    dateField.text = "\(dateString)"
    showTime()
    self.view.endEditing(true)
}

在美国,格式将变为:“EEE,MMM dd,yyyy”。在其他语言环境中,它将显示适当的内容。