我正在尝试在Swift 4中将UTC转换为设备本地时间。为此,我在class A {
public init() {
console.log('a')
}
}
class B extends A {
constructor(public text: string) {
super(); // no longer strictly needed, as parent has no constructor anymore.
}
public init() {
console.log(this.text)
}
}
const b = new B('text');
// only now the object is ready.
b.init();
上找到了许多解决方案,并在代码中实现了它们。我的代码工作正常,但未返回正确答案。
我的代码是:
stackoverflow
根据我的当地时间黎巴嫩,此方法应返回值5:36:27 PM。但是,它将返回下午4:36:27。
注意:我检查了设备的本地时间,并且设置正确
答案 0 :(得分:1)
这是由于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