来自 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"。在其他语言环境中,它会显示适当的内容。
我想将我的日期字段标签设置为同时显示日期和工作日。目前它只显示日期。我试图解决这个问题 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"。在其他语言环境中,它会显示适当的内容。