iOS将UTC转换为本地时间不准确

时间:2018-09-13 11:54:39

标签: ios swift utc

我正在尝试在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。

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

1 个答案:

答案 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