Ios 将UTC日期转换为本地日期swift4
全部, 我正在尝试将UTC日期转换为本地日期。下面是我的代码。但是,即使在转换之后,我也只会得到UTC的两个日期Ios 将UTC日期转换为本地日期swift4,ios,swift4,Ios,Swift4,全部, 我正在尝试将UTC日期转换为本地日期。下面是我的代码。但是,即使在转换之后,我也只会得到UTC的两个日期 static func getTodayDateInLocalTimeZone() -> Date{ let todaydateInUTC = Date() let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ&q
static func getTodayDateInLocalTimeZone() -> Date{
let todaydateInUTC = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let utcDateString = dateFormatter.string(from: todaydateInUTC)
print("Date::: utcDateString: \(utcDateString)")
// Changing to Current timezone
let timzoneIdentiier = TimeZone.current.identifier
let timezone = TimeZone(identifier: timzoneIdentiier)
let abbrv = timezone?.abbreviation()
let dateFormatter1 = DateFormatter()
dateFormatter1.timeZone = TimeZone(identifier: abbrv!)
dateFormatter1.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
print("Date:::timeZone: \(timzoneIdentiier) == \(String(describing: abbrv))")
let formattedDate1 = dateFormatter1.date(from: utcDateString)
print("Date:::: \(formattedDate1)")
return formattedDate1!
}
这是我打印时得到的
Date::: utcDateString: 2021-01-20T17:39:15+0000
Date:::timeZone: America/New_York == Optional("EST")
Date:::: Optional(2021-01-20 17:39:15 +0000)
请告诉我为什么现在改为当地时区。
谢谢首先,日期没有时区 所以
lettodaydateinutc=Date()
实际上意味着lettodaydate=Date()
当您希望向用户显示日期时,时区将变得相关。
因此,您不需要从utcDateString创建新的日期,而只需要从同一日期变量创建另一个日期字符串。
let-formattedDate1=dateFormatter1.date(from:utcDateString)
变为let-tzDateString=dateFormatter1.string(from:todaydate)
这也意味着您的函数应该返回字符串而不是日期
例如:
func getTodayDateInLocalTimeZone() -> String
{
let now = Date()
// Just for debugging. Not for the result.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let utcDateString = dateFormatter.string(from: now)
print("Date::: utcDateString: \(utcDateString)")
let tz = TimeZone.current
let dateFormatter1 = DateFormatter()
dateFormatter1.timeZone = tz
dateFormatter1.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
print("Date:::timeZone: \(tz) == \(String(describing: tz.abbreviation()))")
let tzDateString = dateFormatter1.string(from: now)
print("Date:::: \(tzDateString)")
return tzDateString
}
对我来说,这会导致:
Date::: utcDateString: 2021-01-20T18:19:44+0000
Date:::timeZone: Europe/Berlin (current) == Optional("CET")
Date:::: 2021-01-20T19:19:44+0100
谢谢你的解释,我明白了。