我有以下转换时间的功能:
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。
我错过了什么,是否有自动方式在时区之间正确转换时间?
答案 0 :(得分:2)
处理夏令时只有在知道日期时才有意义。你没有约会,只有一次。所以convertedDate
将是2001年1月1日。因此,无论夏令时规则如何,转换时间时都将使用该日期的用户时区和区域设置。
如果您希望将时间视为“今天”,则可以设置日期格式化程序defaultDate
。
formatter.defaultDate = Date()
如果您想要其他特定日期,请根据需要创建Date
并使用该日期设置defaultDate
。