如何将其他语言环境中的时间解析为美国语言环境?

时间:2017-06-08 16:51:49

标签: ios swift nsdateformatter

我有一个用户可以更改的时间选择器,我需要花时间他们选择并将其转换回美国格式。我目前正在尝试使用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设备支持的任何内容。

1 个答案:

答案 0 :(得分:0)

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

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

这引入了很多复杂性(包括时区,夏令时变化等)。