如何在Swift for iOS中使用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

我正试图解析这个日期“2016年6月18日星期六”到“2016年6月18日” 我知道这可以使用regex方法完成,但我不确定如何使用它获得输出

在swift中使用NSDateFormatter的方法将是首选方法

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您完全正确。我已经更新了我的答案