我想设置我的dateField标签,以显示日期和工作日。目前它只显示日期。我试图遵循这个问题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)
}
答案 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”。在其他语言环境中,它将显示适当的内容。