-7

I'm displaying JSON data using a tableView and I want to convert JSON string to date format in tableView cell.

My JSON date in string format:

"createdDate": "2018-08-16 11:34:59"

I want to convert it into date format in cellForRowAt function.

struct JSONInfo: Decodable {
    let createdDate: String
}

In my cellForRowAt function:

cell.Date.text = JSONList[indexPath.row].createdDate

let createdDate = JSONlist[indexPath.row].createdDate
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let date = dateFormatter.date(from: createdDate)
dateFormatter.dateFormat = "dd/MM/yyyy"
let IssuedDate = dateFormatter.string(from:date!)

let lastDate = JSONlist[indexPath.row].dueDate
let dateFormatters = DateFormatter()
dateFormatters.locale = Locale(identifier: "en_US_POSIX")
dateFormatters.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatters.timeZone = TimeZone(secondsFromGMT: 0)
let dates = dateFormatter.date(from: lastDate)
dateFormatter.dateFormat = "dd/MM/yyyy"
let DueDate = dateFormatter.string(from:dates!)

It's getting error in lastdate. I get the error here:

let DueDate = dateFormatter.string(from:dates!)
rmaddy
  • 314,917
  • 42
  • 532
  • 579
user9772943
  • 45
  • 1
  • 7

2 Answers2

1

In which format do you want to convert. Try this one with your desired format

if let dateString = JSONList[indexPath.row].createdDate{

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let date = dateFormatter.date(from: dateString)
dateFormatter.dateFormat = "dd/MM/yyyy"
let dateStr = dateFormatter.string(from:date!)

cell.Date.text = dateStr

}
sazid008
  • 175
  • 2
  • 14
1
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" //This formate is input formated .
let formateDate = dateFormatter.date(from:"2018-08-16 11:34:59")! //here will be your json string
dateFormatter.dateFormat = "dd/MM/yyyy" // Output Formated
print ("Print :\(dateFormatter.string(from: formateDate))") // Print 16-08-2018
Kuldeep
  • 4,466
  • 8
  • 32
  • 59
Mahesh Dangar
  • 806
  • 5
  • 11