来自 UIDatePicker 的工作日

Weekday from UIDatePicker

我想将我的日期字段标签设置为同时显示日期和工作日。目前它只显示日期。我试图解决这个问题 Displaying the Day Of The Week From Date Picker 但它不是我的解决方案。

 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)

}

您的问题实际上只是关于如何格式化 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"。在其他语言环境中,它会显示适当的内容。