Search code examples
swifttimensdateformatter

how to change date format 2021-30-06T05:00:00+07:00 in swift?


i want to change date format from 2021-30-06T05:00:00+07:00 to get only time with format hh:mm:ss, but i didn't get it. here is my code i already try

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(name: "GMT+7")
let date = dateFormatter.dateFromString("2021-30-06T05:00:00+07:00")

// change to a readable time format and change to local time zone
dateFormatter.dateFormat = "HH:mm:ss"
dateFormatter.timeZone = NSTimeZone.localTimeZone() 
let timeStamp = dateFormatter.stringFromDate(date!)

print(timeStamp)

Solution

  • Your 2021-30-06T05:00:00+07:00 is not matching with yyyy-MM-dd'T'HH:mm:ss.

    Date format should be yyyy-dd-MM'T'HH:mm:ssZZZZZ.

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-dd-MM'T'HH:mm:ssZZZZZ"
    let date = dateFormatter.date(from: "2021-30-06T05:00:00+07:00")
    
    // change to a readable time format and change to local time zone
    dateFormatter.dateFormat = "HH:mm:ss"
    dateFormatter.timeZone = TimeZone.current
    let timeStamp = dateFormatter.string(from: date!)
    print(timeStamp)
    
    

    Output:

    03:30:00  // This is as per my current timezone.