Ios 如何将另一语言环境中的时间解析为美国语言环境?

Ios 如何将另一语言环境中的时间解析为美国语言环境?,ios,swift,nsdateformatter,Ios,Swift,Nsdateformatter,我有一个用户可以更改的时间选择器,我需要花费他们选择的时间并将其转换回US格式。我目前正在尝试使用DateFormatter,以便可以轻松地将其从一种日期格式转换为另一种可以轻松使用的日期格式 下面是我一直试图使用的代码,但它不起作用: let time = "上午11:42" //11:42 AM let timeFormatter = DateFormatter() timeFormatter.locale = Locale(identifier: "en_US_POSIX") time

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

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

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


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

您必须使用用户使用的语言,仅此而已。您的意思是将区域设置为
区域设置(标识符:“zh-Hans_US”)
?是的。但是,将用户输入的日期解析为字符串并不常见。通常用户使用选择器输入日期。@Sulthan设置区域设置似乎有效(不知道为什么我以前没有尝试),谢谢!但是,是的,他们是从选择器中选择日期,而不是手动在中输入日期。如果他们是使用选择器输入日期,则选择器已经为您提供了日期。我将其转换为日期的原因是,我需要将该日期格式化为其他格式,然后提交给我们的API。因此,我试图想出一个解决方案,将用户选择的日期/时间解析回标准格式和API所期望的格式。@ConnorChappell API不应使用本地化格式,而应使用某种特定格式,通常是ISO格式,可以以相同的方式生成/解析。同样,本地化只应在UI中向用户显示数据,而不是以本地化形式将数据存储在数据库中。一旦用户改变了语言,本地化的数据就变得不可用了。也许我没有正确地表达我的问题(对于软件开发来说也是非常新的)。我从我们的API中获得了ISO格式的日期和时间,但我以不同的方式(长样式)显示它。然后,我必须将不同格式的日期/时间(它们可以更改为不同的日期/时间)解析回ISOformat@ConnorChappell我非常确信,只要将
Date
实例保存在变量中,而不是从本地化格式解析它,就可以解决这个问题。