繁体   English   中英

DateFormatter在iPhone上返回nil,但在模拟器上不返回nil

[英]DateFormatter returns nil on iPhone, but not on simulator

我注意到关于iOS 11.3上DateFormatter的怪异情况。 我正在尝试使用以下代码将字符串转换为日期:

    let dateString = "2018-05-31 11:45:24Z"
    let dateFormat = "yyyy-MM-dd HH:mm:ss'Z'"

    var dateFormatter = DateFormatter()
    dateFormatter.dateFormat = dateFormat
    dateFormatter.timeZone = TimeZone(abbreviation: "UTC")

    let date = dateFormatter.date(from: dateString)

奇怪的是,在模拟器上它可以工作,但是在我的iPhone上却不能(日期为nil)。 据我所知,模拟器上的dateFormatter的语言环境是en_US,而在我的iPhone上是en_RO。

如果我将DateFormatter的Locale显式设置为en_US,它将返回正确的值。

    dateFormatter.locale = Locale(identifier: "en-US")

而且,将手机的地区更改为美国后,它可以正确返回,即使将其更改为罗马尼亚,它也可以正常工作。 我尝试重新启动手机,但仍然可以使用。

该问题仅出现在iOS 11上,没有代码的更改,根据我的测试,在Swift和Objective-C中都存在。

这在我的应用程序中引起了问题。 我可以将语言环境强制为“ en-US”,并希望它可以解决此问题。

有人遇到过这种情况么? 有没有其他方法可以解决这个问题?

我有同样的问题。 尝试了我在这里可以找到的几乎所有可能的解决方案,但是仍然没有用。 因此,我奇迹般地看到一条评论,说“将字符串转换为日期时,字符串必须与格式器描述完全匹配”,然后将dateformatter的格式更改为date字符串,并且它起作用了。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM