dateFromString()返回错误的日期swift 3.0

Mad*_*hur 2 ios swift3

我在fromDate.text(textfield)中传递"01/12/2017",但收到意外的输出.

      let formatter = DateFormatter.init()
      formatter.dateFormat = "dd/mm/yyyy"
      startDate = formatter.date(from: fromDate.text!)
      print("startDate = \(startDate)")
Run Code Online (Sandbox Code Playgroud)

输出是:2016年12月31日

Ind*_*eet 8

日期的格式dd/MM/yyyy不应该是dd/mm/yyyy.该mm指示分钟,MM表示月份.

并在代码中添加以下行

formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
Run Code Online (Sandbox Code Playgroud)

这行代码设置了时区.如果你没有,那么你得到30/11/2017输出.

这背后的原因是当字符串日期不包含时间时格式化程序假设它是午夜而你也没有给出时区所以它将占用当前时区.