我构建了一个函数,以便从datePicker传递的日期中获取中国新年的日期。 convertDateFormater将字符串格式化的日期转换为日期对象。这是我回来的日期是返回的NSDate不正确
返回的日期=“03 - 2月 - 2030”的年度“1970年5月22日”
,但如果我运行当前的日期“的NSDate()的日期”我得到正确的输出。在2016年
func convertDateFormater(date: String) -> Date
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"//this your string date format
dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
let date = dateFormatter.date(from: date)
return date!
}
var inputDate1 = convertDateFormater(date: "1970-05-22")
print(inputDate1)
let chineseCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.chinese)!
let formatter: DateFormatter = {
let fmt = DateFormatter()
fmt.dateStyle = .full
fmt.timeStyle = .full
fmt.dateFormat = "dd-MMM-yyyy"
return fmt
}()
var comps = chineseCalendar.components([.year], from: inputDate)
guard let newYear = chineseCalendar.date(from: comps) else { fatalError("no date for \(comps.year)")}
let getNewYear = formatter.string(from: newYear)
print("\(NSDate() as Date) : \(getNewYear) - \(newYear)")
此代码是奇怪。您从公历创建日期(1970年5月22日)。从中提取中国历年,然后从中国历年创建一个全新的日子。然后,将该新日期格式化为公历日历格式。为什么? – rmaddy
这两个日历不同,我想以公历的格式获取中国的新年日期。例如中国新年就在2016年的“08-Feb-2016”。 –
我在Swift操场上运行了代码,'inputDate1'的'comps'中的'year'组件为47。 2030年如何成为一个约会是超越我的。我对中国日历不熟悉。 – rmaddy