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

时间:2017-12-27 08:28:56

标签: ios swift3

我正在过去" 01/12 / 2017"在fromDate.text(textfield)中,但是接收到意外的输出。

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

输出是:2016年12月31日

3 个答案:

答案 0 :(得分:8)

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

并在代码中添加以下行

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

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

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

答案 1 :(得分:3)

必须是dd/MM/yyyy dateformat。 MM在首都。{/ p>

答案 2 :(得分:0)

 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
    }