Swift 如何在考虑日光节约的情况下在时区之间转换时间?

Swift 如何在考虑日光节约的情况下在时区之间转换时间?,swift,timezone,nstimezone,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:

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

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而不是4点


我是否遗漏了什么,是否有一种自动的方法可以正确地在时区之间转换时间

只有当日期已知时,处理夏令时才有意义。你没有约会,只有时间。因此,转换日期将是2001年1月1日。因此,在转换时间时,将使用该日期用户时区和语言环境的夏令时规则

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

formatter.defaultDate = Date()

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

白昼灯是否基于一年中的时间保存?@Rohlex32是的,这取决于国家是否接受。专业提示:在询问时区问题时,说明您正在谈论的时区很有帮助。:)为了进一步说明你的答案,我只是简单地用时间
yyy-MM-dd h:m:sa
传递了日期,所以夏令时是有意义的。谢谢你的回答!
formatter.defaultDate = Date()