swift 将公历日期转换为伊斯兰教日期未显示正确日期

swift converting date from Gregorian to Islamic not showing correct date

我有这个函数可以将 Gregorian 日期转换为 Islamic 日期:

    func toIslamic() -> String {
    let dateFormatter: DateFormatter = DateFormatter()

    dateFormatter.dateFormat = "dd/MM/yyyy"
    dateFormatter.locale = Locale(identifier: "en")
    let GregorianDate = dateFormatter.date(from: "23/03/1992")
    let islamic = Calendar(identifier: Calendar.Identifier.islamicUmmAlQura)
    let components = (islamic as NSCalendar?)?.components(NSCalendar.Unit(rawValue: UInt.max), from: GregorianDate!)
    let fina_date = "\(components!.day!)/\(components!.month!)/\(components!.year!)"
    print("final Islamic Date :: \(fina_date)") // 18/9/1412
    return fina_date

}

输出日期不正确:

函数输出:

print("final Islamic Date :: \(fina_date)") // 18/9/1412

输出应该是:

20/9/1412

有什么我想念的吗?

无法保证您在此转换过程中获得正确的数据,您的应用应提供用户可以 select +1、+2、-1 和 -2 到当前数据的更正部分显示的日期,您应该添加到从转化中获得的日期,即使在 MuslimPro

等最著名的应用程序中也可以找到