Я создаю функцию, чтобы получить дату для китайского нового года с даты, которая передается с datePicker. convertDateFormater преобразует дату форматирования строки в объект даты. дата, которую я получить обратноNSDATE, который возвращается неверно
Возвращается дата = «03-февраля-2030» за год «1970-05-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)")
Этот код является странным. Вы создаете дату из григорианского календаря (дата 22 мая 1970 года). Из этого вы извлекаете китайский календарный год, а затем создаете совершенно новый день только с того китайского календарного года. Затем вы форматируете эту новую дату в виде григорианского календаря. Зачем? – rmaddy
два календаря разные, я хочу получить китайскую дату нового года в григорианском формате календаря. например, китайский новый год находится на «08-Feb-2016» на 2016 год. –
Я запустил ваш код на игровой площадке Swift, а компонент 'year' из' comps' равен 47 для 'inputDate1'. То, как это становится датой в 2030 году, вне меня. Я не знаком с китайским календарем. – rmaddy