Search code examples
iosswiftnsdateformatter

Swift : How to convert String to string with time format?


I have string values include time with formatted "HH:mm" (16:50)

i have to convert this value to "hh:mm" format (04:50) as a string in SWIFT

i have tried NSDateFormatter like

let timeFormat = NSDateFormatter()
timeFormat.dateFormat = "hh:mm"
var dateFromStr = timeFormat.dateFromString("16:50")
var strFromDate = timeFormat.stringFromDate(dateFromStr)

but its not working.. Please tell any solution.


Solution

  • You need 2 NSDateFormatters, one for dateFromString, one for stringFromDate

    let inFormatter = NSDateFormatter()
    inFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
    inFormatter.dateFormat = "HH:mm"
    
    let outFormatter = NSDateFormatter()
    outFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
    outFormatter.dateFormat = "hh:mm"
    
    let inStr = "16:50"
    let date = inFormatter.dateFromString(inStr)!
    let outStr = outFormatter.stringFromDate(date)
    println(outStr) // -> outputs 04:50
    

    Swift 5

    let inFormatter = DateFormatter()
    inFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
    inFormatter.dateFormat = "hh:mm:ssa"
    
    let outFormatter = DateFormatter()
    outFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
    outFormatter.dateFormat = "hh:mm a"
     
    let inStr = "16:50"       
    let datess = inFormatter.date(from: inStr)!
    let outStr = outFormatter.string(from: datess)
    print(outstr)