【发布时间】:2020-01-12 04:00:48
【问题描述】:
我有一个包含一组小时时间字符串的数组,当我想将它更改为日期时,我比实际时间晚了 3 小时。
我的日期格式化程序如下所示
let formatter = DateFormatter()
formatter.dateFormat = "h:mm a"
formatter.timeStyle = .short
formatter.dateStyle = .none
startArr = ["5:14 Am","1:07 PM" , "4:41 PM", "7:28 PM", "8:52 PM"]
let startdateArray = (startArr).map { Calendar.current.dateComponents([.hour, .minute], from:formatter.date(from:$0)!) }
let upcomingDates = startdateArray.map { Calendar.current.nextDate(after: Date(), matching: $0, matchingPolicy: .nextTime)! }
let nextDate = upcomingDates.sorted().first!
print("next date", nextDate)
for (i, n) in startArr.enumerated() {
print(i, "->", n)
}
我从上面的 sn-p 得到以下输出
下一个日期 2019-09-10 13:41:00 +0000
0 -> 凌晨 5 点 14 分
1 -> 下午 1:07
2 -> 下午 4:41
3 -> 晚上 7:28
4 -> 晚上 8:52
【问题讨论】:
-
您是否尝试将格式化程序设置为您的时区?
-
尝试添加这个
formatter.timeZone = TimeZone(identifier: "UTC"。 -
是的,我试过了。但不工作
-
您是否尝试为日历设置它?
-
日期正确。
print始终以 UTC 显示日期。2019-09-10 13:41:00 +0000和2019-09-10 16:41:00 +0300是同一时间点
标签: ios swift date nsdatecomponents