在 swift 中将公历日期选择器转换为波斯日期选择器?

Convert gregorian datepicker to persian datepicker in swift?

如何将 Swift 语言的公历日期选择器转换为波斯语日期选择器?

func datePickerValueChanged(sender: UIDatePicker) {

    let dateFormatter = NSDateFormatter()

    dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle

    dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle
    dateFormatter.dateFormat = NSCalendarIdentifierPersian

    dateOutlet.text = dateFormatter.stringFromDate(sender.date)

}

我将日期格式更改为NSCalendarIdentifierPersian,但日期选择器没有任何变化?

您需要设置 calendar,而不是 dateFormat:

dateFormatter.calendar = NSCalendar(identifier: NSCalendarIdentifierPersian)

如果您希望更改语言,您还必须设置 locale 属性:

dateFormatter.locale = NSLocale(localeIdentifier: "fa_IR")

此外,正如问题注释中的评论,您在代码中使用的是 NSDateFormatter,而不是 UIDatePicker。幸好答案还是正确的; UIDatePicker 也有一个 calendar 属性 可以用来实现这个目标。

Swift 3:

正如 Charles A. 所说 DatePicker 有一个日历 属性 并且您可以使用它来设置波斯语日期选择器甚至 :

datePicker.calendar = Calendar(identifier: .persian)
datePicker.locale = Locale(identifier: "fa_IR")

SwiftUI 示例:

 DatePicker("", selection: self.$mySelectionDate, displayedComponents: .date)
                        .environment(\.locale, Locale.init(identifier: "fa_IR"))
                        .environment(\.calendar,Calendar(identifier: .persian))