我正在尝试将农历新年转换为公历。但是我在iOS上遇到了麻烦,因为SDK返回的年份介于1到60之间(六性周期)不是绝对的。这是来自Xcode游乐场的代码...
let inputGregorianYear = 2020
let chineseCalendar = Calendar(identifier: .chinese)
let gregorianCalendar = Calendar(identifier: .gregorian)
var formatter = DateFormatter()
formatter.dateFormat = "MM/dd/yyyy"
var gregorianComponents = DateComponents()
gregorianComponents.month = 1
gregorianComponents.day = 25
gregorianComponents.year = inputGregorianYear
let chineseNewYear = gregorianCalendar.date(from: gregorianComponents)
formatter.calendar = chineseCalendar
let chineseDateStr = formatter.string(from: chineseNewYear!)
print("Chinese date: \(chineseDateStr)") // Chinese date: 01/01/0037 Should be 01/01/4718?
formatter.calendar = gregorianCalendar
let gregorianDateStr = formatter.string(from: chineseNewYear!)
print("Gregorian date: \(gregorianDateStr)") // Gregorian date: 01/25/2020
似乎我缺少一些设置,无法从六旬制转换为正常年份,但在任何地方都找不到。
您的代码也不错。只需将格式更改为此:
dateFormatter.dateFormat = "dd/MM/YYYY"
这就是我隐秘的约会方式。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/YYYY"
dateFormatter.calendar = Calendar(identifier: .gregorian)
let date = Date()
let dateInGregorian = dateFormatter.string(from: date)
print(dateInGregorian)
dateFormatter.calendar = Calendar(identifier: .chinese)
dateFormatter.dateFormat = "dd/MM/YYYY"
print("Converted date to Chinese = \(dateFormatter.string(from: date))")