ios - 将日期字符串表示为 UTC 日期并将其转换为本地时区
问题描述
后端为我提供格式为“2018-09-07 01:00:00 am”的日期。该日期的时区是 UTC。现在我必须将其转换为本地时区。我正在使用的功能是:
func getLocalDate(dateString: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss a"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
dateFormatter.locale = Locale.current
let dt = dateFormatter.date(from: dateString)
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss aZ"
return dateFormatter.string(from: dt!)
}
有了这个,日期首先转换为UTC,然后转换为本地时区,所以我没有得到想要的结果。如何在不进行任何转换的情况下将该日期的时区设置为 UTC?
编辑:我得到的输出是 2018-09-07 05:45:00 AM+0545 但预期的输出是 2018-09-07 06:45:00 AM+0545
解决方案
12 小时制的格式说明符是hh
,而不是HH
24 小时制的。
HH
与 am/pm 说明符结合a
会产生不正确的结果。
推荐阅读
- javascript - 如何在反应中获取选择下拉列表的映射选项的值?
- r - 直方图的对数尺度变换和拟合伽马曲线
- amazon-web-services - 努力将 Step Functions 活动任务与 A2I 人工循环工作流集成
- screensharing - 使用 Janus WebRTC Gateway 同时发布我的屏幕和相机
- ios - Apple 在应用程序配置中“无法添加卡”
- r - 在 R 中创建具有多个时区的多个 POSIXlt 日期
- javascript - Node/Apollo/Sequelize 非常慢(>7 秒)
- php - Git克隆和作曲家安装在docker上
- spring-boot - Cloud Run、Secret Manager 和 Spring Boot
- slack - 如何使用自定义消息生成器显示在 slack 中单击按钮的用户名