将公历日期转换为回历日期

Convert gregorian date to Hijri date

源码来自:

Hijri (islamic) calendar in swift التاريخ الهجري

How can I convert string date to NSDate?

我只是把它们放在一起,但输出有一些错误。

let dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "YYYY-MM-DD"

let GregorianDate = dateFormatter.dateFromString("\(Yeartext1.text!)-\(Monthtext1.text!)-\(Daytext1.text!)")

let islamic = NSCalendar(identifier: NSIslamicCalendar)

let components = islamic?.components(NSCalendarUnit(rawValue: UInt.max), fromDate: GregorianDate!)

resultlable.text = "\(components!.year) - \(components!.month) - \(components!.day)"

例如,用户将输入公历日期 (2015/09/29),它应该显示回历年 (1436/12/15),但这不起作用。

Yeartext1、Monthtext1 和 Monthtext1 是 UITextField

结果是 UILabel

    let dateFormatter = NSDateFormatter()

    dateFormatter.dateFormat = "dd-MM-yyyy"

    let GregorianDate = dateFormatter.dateFromString("\(Daytext1.text!)-\(Monthtext1.text!)-\(Yeartext1.text!)")

    let islamic = NSCalendar(identifier: NSCalendarIdentifierIslamicUmmAlQura)

    let components = islamic?.components(NSCalendarUnit(rawValue: UInt.max), fromDate: GregorianDate!)

    resultlable.text = "\(components!.year) - \(components!.month) - \(components!.day)"

公历日期为 5-10-2015,伊斯兰教日期为 1436 - 12 - 22

*有小概率一天出错

你可以检查这个转换器 http://www.islamicfinder.org/Hcal/hdate_next.php

回历到公历(这可以帮助某人)

let dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "dd-MM-yyyy"

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

let islamicDate = dateFormatter.dateFromString("8-10-1437")

let gregorian = NSCalendar(identifier: NSCalendarIdentifierGregorian)

let components = gregorian?.components(NSCalendarUnit(rawValue: UInt.max), fromDate: islamicDate!)

print("\(components!.year) - \(components!.month) - \(components!.day)")