Sha*_*ain 1 date regional-settings swift
我正在运行一段代码,该代码nil在使用其他语言设置的iPhone上运行时会返回。代码中的示例如下所示:
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))")
Run Code Online (Sandbox Code Playgroud)
如果运行此命令,则会得到:
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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以显示如何覆盖客户端设置,从而thisDate不会返回nil吗?
每当您需要解析始终以固定语言到达的固定格式日期/时间字符串时,都需要设置日期格式器的语言环境,使其与您要解析的数据相匹配。
在这种情况下,最好使用的特殊语言环境en_US_POSIX。这样可以确保无论用户的语言环境如何,都可以使用英语月份的名称,并且可以正确处理设备上的12/24时间设置。
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |