gpt4 book ai didi

Swift - 日期格式化程序返回不需要的时间

转载 作者:搜寻专家 更新时间:2023-11-01 06:25:36 24 4
gpt4 key购买 nike

如果我将“2019-01-01T00:00:00+0000”转换为日期,我希望该日期是字符串中的日期 - 2019 年 1 月 1 日。如果我计算秒数时间部分,我希望结果为零。

问题是,当我将字符串转换为日期时,它存储在 UTC 时区中。我的区域设置为“en_US_POSIX”,我的时区设置为当前。我的日期格式化程序使用“yyyy-MM-dd'T'HH:mm:ssZ”。我知道最后的 Z 表示 UTC,但我似乎无法找出正确的字段符号来获得我想要的结果。

func convertToDate(_ dateString: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = .current
let date = dateFormatter.date(from: dateString)
else {
print("DATE ERROR:", dateString)
return Date()
}
return date
}

最佳答案

如果您确定要解析的日期字符串总是以 +XXXX 形式的时区结尾,那么您可以从字符串中删除该时区,然后解析剩余的字符串本地时间。

func convertToDate(_ dateString: String) -> Date? {
let minusTZ = String(dateString.dropLast(5)) // Assume the string ends with a +9999 timezone
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: minusTZ)
return date
}

无论原始字符串的时区如何,这都会为您提供与原始字符串中具有相同日期和时间的本地日期。

关于Swift - 日期格式化程序返回不需要的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55787750/

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