如何在Swift中将公历日期转换为中文(而不是六旬期)

问题描述 投票:0回答:1

我正在尝试将农历新年转换为公历。但是我在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

似乎我缺少一些设置,无法从六旬制转换为正常年份,但在任何地方都找不到。

ios swift nscalendar
1个回答
0
投票

您的代码也不错。只需将格式更改为此:

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))")
© www.soinside.com 2019 - 2024. All rights reserved.