2017-10-22 7 views
-1

異なる言語設定のiPhoneで実行しているときにnilを返すコードを実行しています。別の言語でdateFormatterを使用

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "MMM d, yyyy, h:mm a" 

let thisDate = "Mar 4, 2017, 7:50 PM" 
let foundationDate = dateFormatter.string(from: Foundation.Date()) 


print("As String - thisDate: \(thisDate), foundationDate: \(foundationDate)")  
print("As Date - thisDate: \(dateFormatter.date(from: thisDate)), foundationDate: \(dateFormatter.date(from: foundationDate))") 

私はこれを実行すると、私が手:コードの例は次のようになり

As String - thisDate: Mar 4, 2017, 7:50 PM, foundationDate: okt. 22, 2017, 7:57 PM 
As Date - thisDate: nil, foundationDate: Optional(2017-10-22 17:57:00 +0000) 

誰もがクライアントの設定を上書きする方法を示しことができるようにthisDateはnilを返していないのだろうか?

+0

Foundation.Date()の余分なヘッドアップありがとう –

答えて

1

いつも固定言語で到着する固定形式の日付/時刻文字列を解析する必要があるときは、解析するデータと一致するように日付フォーマッタのロケールを設定する必要があります。

この場合、特殊ロケールはen_US_POSIXを使用することをお勧めします。これにより、ユーザーのロケールに関係なく、デバイスの12/24時間設定を適切に処理するだけで、英語の月の名前が確実に処理されます。

dateFormatter.locale = Locale(identifier: "en_US_POSIX") 
+0

ありがとう。私はこの余分な設定でテストを実行し、私は "正常"に戻ります。すばやく元気づけるための乾杯 –

関連する問題