Search code examples
iosdateswift3nsdateformatter

How to get time from YYYY-MM-dd'T'HH:mm:ss.sssZ


Hi I want to get time as 11:40 from 2017-07-31T11:40:00.000Z

Below is the code I am using:

let formatter = Foundation.DateFormatter()
formatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.sssZ" //2017-04-01T18:05:00.000
let date1  = formatter.date(from: data.arvTime)
print("date:\(String(describing: date1))")
let dateFormatterPrint = Foundation.DateFormatter()
dateFormatterPrint.dateFormat = "HH:mm"
let resultTime = dateFormatterPrint.string(from: date1!)
print("time:\(String(describing: resultTime))")

Getting time as 1:29 i.e. I am getting wrong time.

Please help me to solve this issue.


Solution

  • use the dateformat

    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
    

    instead of

    formatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.sssZ" 
    

    for full code

     let formatter = Foundation.DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" //2017-04-01T18:05:00.000
        let date1  = formatter.date(from: "2017-04-01T18:05:00.000Z")
        print("date:\(String(describing: date1))") 
        formatter.dateFormat = "HH:mm"
        let resultTime = formatter.string(from: date1!)
        print("time:\(String(describing: resultTime))")
    

    option-2

        let formatter = Foundation.DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.sssZ" //2017-04-01T18:05:00.000
        let date1  = formatter.date(from: "2017-04-01T18:05:00.000Z")
        print("date:\(String(describing: date1))")
        formatter.timeZone = TimeZone(abbreviation: "UTC")
        formatter.dateFormat = "HH:mm"
        let resultTime = formatter.string(from: date1!)
        print("time:\(String(describing: resultTime))")
    

    output

    enter image description here