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"에 있습니다. –
스위프트 놀이터에서 코드를 실행했고'comps '의'year' 구성 요소는'inputDate1'에 대해 47입니다. 그것이 2030 년에 어떻게 될 것인가는 저를 넘어선 것입니다. 나는 중국 달력에 익숙하지 않다. – rmaddy