Search code examples
iosswiftnsdateformatter

How to change JSON string to date format in tableview


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!)

Solution

  • 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
    
    }