myLabel 显示错误名称 (UIDatePicker)

myLabel display the wrong name (UIDatePicker)

我有一个问题,我的标签在从 DatePicker 中选择后显示错误的月份名称。

img app

代码:

    let myDatePicker: UIDatePicker = {
    let pv = UIDatePicker()
    pv.datePickerMode = .date
    pv.locale = Locale(identifier: "de_DE")
    pv.addTarget(self, action: #selector(datePickerValueChanged), for: .valueChanged)
    return pv
}()

@objc func datePickerValueChanged(datePicker: UIDatePicker) {

    let format = "dd MMM, yyyy"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = format

    let dateValue = dateFormatter.string(from: datePicker.date)

    myLabel.text = dateValue
}

let myLabel: UILabel = {
    let label = UILabel()
    return label
}()

P.S 我还有一个问题,如何使用区域设置在 DatePicker 中自动设置月份的语言?

我试过了(在 myDatePicker 中):pv.locale = .current

第一个问题:

您需要 "localize" 您的 dateFormatter,使用

dateFormatter.locale = datePicker.locale

在你的 datePickerValueChanged

第二个问题:

您想检索从 iPhone 设置

检索到的正确月份名称

使用 Locale.autoupdatingCurrent 而不是 Locale(identifier: "de_DE") .这会获取用户首选的当前语言环境,自动更新。