日期输入“00/02/02”
格式样式为yy/MM/dd
我得到了正确的输出,如2000年1月2日
但问题是在尝试“00/01/01”时
得到这样的输出'01/01/12100'
但我不知道为什么今年会像12100年一样
我的代码是

let str = "00/01/01"

let inputFormatter = DateFormatter()
inputFormatter.dateFormat = "yy/MM/dd"
if let showDate = inputFormatter.date(from: str) {
   inputFormatter.dateFormat = "dd/MM/yyyy"
   let resultString = inputFormatter.string(from: showDate)
   print(resultString)
 }

年份输入类型始终为yy格式。

最佳答案

根据@MartinR建议
将inputFormatter.defaultDate设置为当前日期或日期(TimeIntervalsIncerenceDate:0)其工作正常

let str = "00/01/01"

let inputFormatter = DateFormatter()
inputFormatter.defaultDate = Date(timeIntervalSinceReferenceDate: 0)
inputFormatter.dateFormat = "yy/MM/dd"
if let showDate = inputFormatter.date(from: str) {
  inputFormatter.dateFormat = "dd/MM/yyyy"
 let resultString = inputFormatter.string(from: showDate)
 print(resultString)
 }

关于swift - 从dateFormat获取错误的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52701626/

10-11 10:52