iOS Swift converting calendar component int month to medium style string month
You can use DateFormatter as follow:
extension Formatter { static let monthMedium: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "LLL" return formatter }() static let hour12: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "h" return formatter }() static let minute0x: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "mm" return formatter }() static let amPM: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "a" return formatter }()}extension Date { var monthMedium: String { return Formatter.monthMedium.string(from: self) } var hour12: String { return Formatter.hour12.string(from: self) } var minute0x: String { return Formatter.minute0x.string(from: self) } var amPM: String { return Formatter.amPM.string(from: self) }}
let date = Date()let dateMonth = date.monthMedium // "May"let dateHour = date.hour12 // "1"let dateMinute = date.minute0x // "18"let dateAmPm = date.amPM // "PM"
NSDateFormatter
has monthSymbols
, shortMonthSymbols
and veryShortSymbols
properties.
So try this:
let dateFormatter: NSDateFormatter = NSDateFormatter()let months = dateFormatter.shortMonthSymbolslet monthSymbol = months[month-1] as! String // month - from your date componentsprintln(monthSymbol)
I am adding three types. Have a look. //Todays Date let todayDate = NSDate() let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)! let components = calendar.components(.CalendarUnitYear | .CalendarUnitMonth | .CalendarUnitDay, fromDate: todayDate) var (year, month, date) = (components.year, components.month, components.day) println("YEAR: \(year) MONTH: \(month) DATE: \(date)") //Making a X mas Yr let morningOfChristmasComponents = NSDateComponents() morningOfChristmasComponents.year = 2014 morningOfChristmasComponents.month = 12 morningOfChristmasComponents.day = 25 morningOfChristmasComponents.hour = 7 morningOfChristmasComponents.minute = 0 morningOfChristmasComponents.second = 0 let morningOfChristmas = NSCalendar.currentCalendar().dateFromComponents(morningOfChristmasComponents)! let formatter = NSDateFormatter() formatter.dateStyle = NSDateFormatterStyle.LongStyle formatter.timeStyle = .MediumStyle let dateString = formatter.stringFromDate(morningOfChristmas) print("dateString : \(dateString)") //Current month - complete name let dateFormatter: NSDateFormatter = NSDateFormatter() let months = dateFormatter.monthSymbols let monthSymbol = months[month-1] as! String println("monthSymbol : \(monthSymbol)")Print Results:YEAR: 2015 MONTH: 10 DATE: 9dateString : December 25, 2014 at 7:00:00 AMmonthSymbol : October