簡體   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