dateFormatter.dateFromString - 模拟器和Apple TV上的不同结果



在Apple TV上,结果是"日期未格式化…"

在模拟器上,结果是"日期格式…"

import UIKit
class ViewController: UIViewController {
    @IBOutlet weak var resultLabel: UILabel!
    override func viewDidAppear(animated: Bool) {
        let lastModifiedDate = "Sun, 01 May 2016 00:46:17 GMT"
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss z"
        if let lastModifiedDate = dateFormatter.dateFromString(lastModifiedDate) {
            resultLabel.text = "date formated (lastModifiedDate)"
        } else {
            resultLabel.text = "date NOT formated (lastModifiedDate)"
        }
    }
}

您的Apple TV的区域设置很可能与Mac(模拟器)上的区域设置不同。根据区域设置,dateFormatter可能无法从字符串创建NSDate。您应该始终使用

+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale

来自文档:

返回一个本地化日期格式字符串,该字符串表示为指定区域设置适当排列的给定日期格式组件。返回值表示模板中给定的日期格式组件的本地化日期格式字符串,根据区域设置指定的区域设置进行适当排列。返回的字符串可能不完全包含模板中给定的组件,但可能(例如)应用了特定于区域设置的调整。讨论不同的地区对日期组件的排序有不同的约定。您可以使用此方法为指定区域设置的给定组件集获取适当的格式字符串(通常使用当前区域设置,请参阅currentLocale)。

另请参阅:此答案。

我添加了以下行。现在它开始工作了。

    dateFormatter.locale = NSLocale(localeIdentifier: "en_GB")

相关内容

  • 没有找到相关文章

最新更新