RealBadCoder
RealBadCoder

Reputation: 351

Date format gone wrong in swift

I need to set a date in medium format like: Jul 17, 2016 4:30:00 PM, but I get 07/17/2016 4:30:00 p.m.

Any help will be highly appreciated. Thanks in advance. this is my code:

 let dateFormatter = NSDateFormatter()

 dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
 dateFormatter.timeStyle = NSDateFormatterStyle.MediumStyle

 let mydate = dateFormatter.stringFromDate(NSDate())

Upvotes: 0

Views: 576

Answers (2)

Vivek Molkar
Vivek Molkar

Reputation: 3960

For me, the code you are using does exactly what you need.

In case you need you can achieve this by using MMM dd, yyyy h:mm a as the format string for your formatter object.

Code follows:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy h:mm a"
let mydate = dateFormatter.stringFromDate(NSDate())
// "Jul 17, 2016 11:48 AM"

Upvotes: 1

Leo Dabus
Leo Dabus

Reputation: 236568

You just need to set your date formatter locale to "en_US_POSIX" and you should also set your formatter calendar to ISO8601 to get the result you were expecting:

Xcode 8 beta 2 • Swift 3

let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .ISO8601)
dateFormatter.locale = Locale(localeIdentifier: "en_US_POSIX")
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .medium
print(dateFormatter.string(from: Date()))  // "Jul 17, 2016, 4:09:48 AM\n"

Xcode 7.3.1 • Swift 2.2.1

let dateFormatter = NSDateFormatter()
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
print(dateFormatter.stringFromDate(NSDate()))  // "Jul 17, 2016, 4:12:49 AM\n"

Upvotes: 0

Related Questions