我明白瞭如何使用NSDateFormatter
一個月組件轉換爲長名稱字符串,但如何轉換成一個月份名稱到int
?轉換漫長的一個月名稱爲int
我一直在使用switch語句進行轉換,但我認爲必須有一個更簡單的方法。
例如,我想轉換「五一」到5
我明白瞭如何使用NSDateFormatter
一個月組件轉換爲長名稱字符串,但如何轉換成一個月份名稱到int
?轉換漫長的一個月名稱爲int
我一直在使用switch語句進行轉換,但我認爲必須有一個更簡單的方法。
例如,我想轉換「五一」到5
使用MM
月格式。使用stringFromDate
將您的NSDate
轉換爲String
。然後你的字符串轉換爲Int
與.toInt()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM"
let monthString = dateFormatter.stringFromDate(NSDate()) // "05"
let monthInt = monthString.toInt() // 5
感謝約什。我已經轉換的OBJ-C代碼,並張貼在下面以備將來參考:
let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)
let components = NSDateComponents()
let formatter = NSDateFormatter()
formatter.dateFormat = "MMMM"
let aDate = formatter.dateFromString("May")
let components1 = calendar!.components(.CalendarUnitMonth , fromDate: aDate!)
let monthInt = components.month
let df = NSDateFormatter()
df.dateFormat = "LLLL" // if you need 3 letter month just use "LLL"
if let date = df.dateFromString("May") {
let month = NSCalendar.currentCalendar().component(.CalendarUnitMonth, fromDate: date)
print(month) // 5
}
NSDateFormatter
有monthSymbols
property。嘗試:
let formatter = NSDateFormatter()
formatter.calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)
let monthString = "September"
let month = find(formatter.monthSymbols as! [String], monthString).map { $0 + 1 }
// -> Optional(9)
let monthString2 = "Foobar"
let month2 = find(formatter.monthSymbols as! [String], monthString2).map { $0 + 1 }
// -> nil
正確的過程在這裏:[從月份名稱獲取月份編號](http://stackoverflow.com/q/9114829),雖然它是用ObjC編寫的。 –