如何解决我想使用Swift根据系统时区将UTC日期转换为系统日期之前对我有用
func getDateWithoutTimeFordisplay() -> String {
let formatter = DateFormatter()
// formatter.locale = Locale(identifier: "en_US")
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
formatter.timeZone = TimeZone(identifier: "UTC")
formatter.locale = Locale(identifier: "en_US_POSIX")
let myStringafd = formatter.date(from: self)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.timeZone = NSTimeZone.local
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
if let myStringafd = myStringafd {
let somedateString = dateFormatter.string(from: myStringafd)
return somedateString
}
return ""
}
这是我的代码,用于根据本地时区将给定的UTC日期转换为系统日期。 实际问题是,假设情况“我的日期为25-08-2020,时间为1.00 AM,根据印度时区(UTC时间比印度时间小5.30),相应的UTC日期为24-08- 2020年由于与印度时间存在时差”。在这种情况下,我想将UTC日期(因为它影响要向用户显示的日期)转换为当前系统日期。
我的系统日期和时间是25-08-2020 1:00 AM(印度时间) 对应的UTC日期为24-08-2020。 -5:30 hr
我需要将UTC日期转换为当前本地时间
解决方法
尝试一下:
let currentDate = self.UTCToLocal(date: Date().description) //This will pass system date in UTC format to the function and function will return desired output in local timezone
func UTCToLocal(date: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssz" //The date format should be exact as same as UTC date
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: date)
dateFormatter.timeZone = NSTimeZone.local
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss" //The desired date format in which you may want to return the value
return dateFormatter.string(from: dt!)
}
或者您可以查看此帖子-Returning nil when converting string to date in swift和此日期格式链接-https://nsdateformatter.com/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。