Angel Jonathan Angel Jonathan - 13 days ago 5
iOS Question

swift NSDateFormatter not working

I'm trying to format time as follows:

let formatter = NSDateFormatter()
formatter.dateFormat = "hh_mm_ss"
let d = formatter.stringFromDate(NSDate())
println("formatted text is: \(d)")


Suppose that current time is Sep 3, 2014 22:15:30


  1. When I run this script on playground, it prints the time correctly formatted:
    22_15_30
    .

  2. When running this on AppDelegate, it doesn't print the time formatted:
    22:15:30



I'm using xcode 6 beta 5... Am I missing something? Why stringFromDate doesn't return the correct date formatted?

EDIT: I'm using xcode 6 beta 6.

Thanks!

Answer

The 24-hour format is "HH", not "hh".

The reason that it works in the Playground may be that user defined settings can override the 12/24-format choice, compare What is the best way to deal with the NSDateFormatter locale "feature"?. To be on the safe side, set the "en_US_POSIX" locale for the date formatter:

formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")

// Swift 3:
formatter.locale = Locale(identifier: "en_US_POSIX")