Swift dateFormatter.dateFromString-模拟器上的不同结果&;苹果电视
在苹果电视上,结果是“日期未格式化…” 在模拟器上,结果是“日期格式化…”Swift dateFormatter.dateFromString-模拟器上的不同结果&;苹果电视,swift,tvos,apple-tv,Swift,Tvos,Apple Tv,在苹果电视上,结果是“日期未格式化…” 在模拟器上,结果是“日期格式化…” 最有可能的是,您的苹果电视的区域设置与Mac(模拟器)上的不同。根据区域设置,dateFormatter可能无法从字符串创建NSDate。 你应该始终使用 + (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale 从文档中: 返回本地化的日期格式字符串,该字符串
最有可能的是,您的苹果电视的区域设置与Mac(模拟器)上的不同。根据区域设置,dateFormatter可能无法从字符串创建NSDate。 你应该始终使用
+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale
从文档中:
返回本地化的日期格式字符串,该字符串表示为指定区域设置适当排列的给定日期格式组件。返回值一个本地化的日期格式字符串,表示模板中给定的日期格式组件,按照区域设置指定的区域设置进行适当排列。
返回的字符串可能不完全包含模板中给定的组件,但可能应用了特定于语言环境的调整。
讨论
对于日期组件的排序,不同的地区有不同的约定。使用此方法可以为指定区域设置的给定组件集获取适当的格式字符串(通常使用当前区域设置请参见currentLocale)
另请参见:我添加了以下行。现在它开始工作了
dateFormatter.locale = NSLocale(localeIdentifier: "en_GB")
但是请记住,硬编码区域设置可能不是用户的最佳体验。最好的解决方案是让它在任何语言环境下工作。
dateFormatter.locale = NSLocale(localeIdentifier: "en_GB")