[英]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.