如何在Swift for iOS中使用NSDateFormatter格式化日期?
我正试图解析这个日期“2016年6月18日星期六”到“2016年6月18日” 我知道这可以使用regex方法完成,但我不确定如何使用它获得输出 在swift中使用NSDateFormatter的方法将是首选方法如何在Swift for iOS中使用NSDateFormatter格式化日期?,ios,regex,swift,date,nsdateformatter,Ios,Regex,Swift,Date,Nsdateformatter,我正试图解析这个日期“2016年6月18日星期六”到“2016年6月18日” 我知道这可以使用regex方法完成,但我不确定如何使用它获得输出 在swift中使用NSDateFormatter的方法将是首选方法 NSDateFormatter不支持带有序号指示器的天数,因此您必须去掉它们。您可以使用正则表达式: let regex = try NSRegularExpression(pattern: "[st|nd|rd|th]", options: NSRegularExpressio
NSDateFormatter
不支持带有序号指示器的天数,因此您必须去掉它们。您可以使用正则表达式:
let regex = try NSRegularExpression(pattern: "[st|nd|rd|th]", options: NSRegularExpressionOptions())
regex.replaceMatchesInString(dateString, options: NSMatchingOptions(), range: NSMakeRange(0, 4), withTemplate: "")
然后您只需格式化日期。
完整代码:
let dateString = NSMutableString(string: "18th of June 2016. Saturday")
do {
let regex = try NSRegularExpression(pattern: "[st|nd|rd|th]", options: NSRegularExpressionOptions())
regex.replaceMatchesInString(dateString, options: NSMatchingOptions(), range: NSMakeRange(0, 4), withTemplate: "")
let formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US")
formatter.dateFormat = "d' of 'MMMM y'.' EEEE"
let date = formatter.dateFromString(dateString as String)
formatter.dateStyle = .ShortStyle
formatter.locale = NSLocale.currentLocale()
let output = formatter.stringFromDate(date!)
print(output)
} catch let error as NSError { print(error) }
请记住,
NSNumberFormatter
将根据当前区域设置进行格式化 使用NSDateFormatter
是正确的解决方案。使用正则表达式根本不是您应该做的事情。用您迄今为止尝试过的内容更新您的问题。也许可以阅读文档。NSDateFormatter的Apple文档
:。如果您在使用NSDateFormatter
时遇到特定问题,请编辑您的问题,以包括代码和您遇到的问题。由于原始日期字符串使用的是特定语言(英语),您需要将日期格式化程序的区域设置为英语区域设置。@rmaddy您完全正确。我已经更新了我的答案