dateFromString() 返回错误日期 swift 3.0

dateFromString() returning wrong date swift 3.0

我在 fromDate.text(文本字段)中传递“01/12/2017”,但收到意外输出。

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

输出是:31/12/2016

它必须是 dd/MM/yyyy 日期格式。 MM 大写。

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

并在您的代码中添加以下行

formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")

这行代码设置时区。如果你不这样做,那么你会在输出中得到 30/11/2017

这背后的原因是,当字符串日期不包含时间时,格式化程序会假设现在是午夜,而您也没有给出时区,因此它将采用当前时区。

 func convertToString(of dateTo: Date) -> String {

        let dateFormatter = DateFormatter()

        dateFormatter.dateFormat = "dd/MM/yyyy" //Your New Date format as per requirement change it own

        let newDate: String = dateFormatter.string(from: dateTo) //pass Date here

        print(newDate) //New formatted Date string

        return newDate
    }