gpt4 book ai didi

UTC 到本地时间的 IOS 转换不准确

转载 作者:可可西里 更新时间:2023-11-01 01:56:49 24 4
gpt4 key购买 nike

我正在尝试在 Swift 4 中将 UTC 转换为设备本地时间。我在 stackoverflow 上找到了很多解决方案,并在我的代码中实现了它们。我的代码运行良好,但未返回正确答案。

我的代码是:

func UTCToLocal() -> String {
let a = "2:36:27 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm:ss aa"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")

let dt = dateFormatter.date(from: a)
dateFormatter.timeZone = TimeZone.current
dateFormatter.defaultDate = Date()
dateFormatter.dateFormat = "hh:mm:ss aa"

return dateFormatter.string(from: dt!)
}

根据我的本地时间,黎巴嫩,此方法应返回值 5:36:27 PM。但是,它会在下午 4:36:27 返回。

注意:我检查了我设备的本地时间并且设置正确

最佳答案

这是由于 Daylight Saving Time在黎巴嫩。您可以使用 daylightSavingTimeOffset(for:) 来考虑时间偏移量。您所在时区的方法:

func UTCToLocal() -> String {
let a = "2:36:27 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm:ss aa"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: a)

dateFormatter.timeZone = TimeZone.current
let offset = dateFormatter.timeZone.daylightSavingTimeOffset(for: dt!)
dateFormatter.defaultDate = Date()
dateFormatter.dateFormat = "hh:mm:ss aa"
return dateFormatter.string(from: dt! + offset)
}

UTCToLocal()

请注意 dt 是“2000 年 1 月 1 日下午 2:36”,因为您没有指定 .day.month.year 中的日期组件 a

关于UTC 到本地时间的 IOS 转换不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com