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

标签 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 设备支持的任何语言。

最佳答案

简单地说,解析器必须使用用于生成该字符串的区域设置。

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

这引入了很多复杂性(包括时区、夏令时更改等)。

关于ios - 如何将另一个语言环境中的时间解析为美国语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44441514/

相关文章:

ios - 我可以通过在 iOS 应用程序中使用 API Spotify 来解决这个问题吗?

ios - 使用 Arduino 的 CoreBluetooth 外设

ios - Pod Install 无权访问私有(private) repo,但 git clone 等在同一个 repo 上工作

ios - 将 UINavigationView 的大小限制为其当前呈现的 Controller 的大小?

swift - 在真实设备上展示测试广告

ios - NSCoreData 条目获取的性能

ios - 将 Youtube 视频以高清格式嵌入 iOS 应用程序

cocoa - 将 NSDate 格式化为年、月、日、时、分、秒的特定样式

objective-c - 使用 NSDateFormatter 保留原始时区

ios - UIDatePicker给错时间