我構建了一個函數,以便從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