我有一个用户可以更改的时间选择器,我需要花费他们选择的时间并将其转换回美国格式。我目前正在尝试使用DateFormatter,因此我可以轻松地将其从一种日期格式转换为可以轻松使用的另一种日期格式。

这是我一直在尝试使用的代码,但是它不起作用:

let time = "上午11:42"  //11:42 AM
let timeFormatter = DateFormatter()
timeFormatter.locale = Locale(identifier: "en_US_POSIX")
timeFormatter.timeStyle = .short
timeFormatter.dateStyle = .none
timeFormatter.isLenient = true
timeFormatter.date(from: time)  //returns nil


时间格式应该非常动态,因为用户可以将其语言更改为iOS设备支持的任何语言。

最佳答案

简单地说,解析器必须使用用于生成该字符串的语言环境。

但是,解析本地化字符串是一种反模式。如果用户使用选择器输入日期,则应使用该选择器中的日期。您不应该将其格式化为字符串然后解析回字符串。

这带来了很多复杂性(包括时区,夏令时更改等)。

10-08 17:50