如何在考虑日光的时区之间转换时间?

时间:2018-06-01 14:14:42

标签: swift timezone nstimezone

我有以下转换时间的功能:

static func convert(date: String) -> String {

        let formatter = DateFormatter()
        formatter.dateFormat = "h:m:s a"
        formatter.timeZone = TimeZone(identifier: "UTC")

        let convertedDate = formatter.date(from: date)
        formatter.timeZone = NSTimeZone.local

        return formatter.string(from: convertedDate!)
    }

由于我根据设备的时区设置了新时区,因此我教导了夏令时将被考虑在内。但是当我传入2:00:00 PM时,它返回3:0:0 pm而不是4。

我错过了什么,是否有自动方式在时区之间正确转换时间?

1 个答案:

答案 0 :(得分:2)

处理夏令时只有在知道日期时才有意义。你没有约会,只有一次。所以convertedDate将是2001年1月1日。因此,无论夏令时规则如何,转换时间时都将使用该日期的用户时区和区域设置。

如果您希望将时间视为“今天”,则可以设置日期格式化程序defaultDate

formatter.defaultDate = Date()

如果您想要其他特定日期,请根据需要创建Date并使用该日期设置defaultDate