将长月份名称转换为 int
Convert long month name to int
我了解如何使用 NSDateFormatter
将月份部分转换为长名称字符串,但如何将月份名称转换为 int
?
我一直在使用switch语句来转换,但我想一定有更简单的方法。
例如,我想将 "May" 转换为 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
您可以使用 DateFormatter 自定义格式 "LLLL"
来解析您的日期字符串(月份)。如果您只用英文解析日期,则应将日期格式化程序语言环境设置为 "en_US_POSIX"
:
let df = DateFormatter()
df.locale = Locale(identifier: "en_US_POSIX")
df.dateFormat = "LLLL" // if you need 3 letter month just use "LLL"
if let date = df.date(from: "May") {
let month = Calendar.current.component(.month, from: 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 { [=10=] + 1 }
// -> Optional(9)
let monthString2 = "Foobar"
let month2 = find(formatter.monthSymbols as! [String], monthString2).map { [=10=] + 1 }
// -> nil
我了解如何使用 NSDateFormatter
将月份部分转换为长名称字符串,但如何将月份名称转换为 int
?
我一直在使用switch语句来转换,但我想一定有更简单的方法。
例如,我想将 "May" 转换为 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
您可以使用 DateFormatter 自定义格式 "LLLL"
来解析您的日期字符串(月份)。如果您只用英文解析日期,则应将日期格式化程序语言环境设置为 "en_US_POSIX"
:
let df = DateFormatter()
df.locale = Locale(identifier: "en_US_POSIX")
df.dateFormat = "LLLL" // if you need 3 letter month just use "LLL"
if let date = df.date(from: "May") {
let month = Calendar.current.component(.month, from: 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 { [=10=] + 1 }
// -> Optional(9)
let monthString2 = "Foobar"
let month2 = find(formatter.monthSymbols as! [String], monthString2).map { [=10=] + 1 }
// -> nil