在操场上尝试以下方法。在iOS 12之前,它适用于所有输入(从1开始):
输入等于输出
let input = 1
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
var dateComponents = DateComponents()
dateComponents.day = input
dateComponents.hour = 0
dateComponents.minute = 0
dateComponents.second = 0
let date = Calendar.current.date(from: dateComponents)
let dateString = dateFormatter.string(from: date!)
let date2 = dateFormatter.date(from: dateString)
let output = Calendar.current.ordinality(of: .day, in: .era, for: date2!)
assert(output==input)
但是,现在在iOS 12中,从输入577738开始,输出和输入才相等...日期为1582年10月17日,即公历生效后两天(来源:{ {3}})
那么,这是怎么回事?为什么在iOS 12中会发生这种变化?