Ios 日期(通过添加:)在Swift 4中返回的值不正确

Ios 日期(通过添加:)在Swift 4中返回的值不正确,ios,swift,nsdate,swift4,Ios,Swift,Nsdate,Swift4,我有以下代码: let defaults = UserDefaults.standard if let dateOpened: Date = defaults.object(forKey: "lastOpened") as? Date { let (intHour, intMinute, time1) = getStuffFromTime(time: alarms[i].time, amOrPm: alarms[i].amOrPm) // this is my own functi

我有以下代码:

let defaults = UserDefaults.standard
if let dateOpened: Date = defaults.object(forKey: "lastOpened") as? Date {

   let (intHour, intMinute, time1) = getStuffFromTime(time: alarms[i].time, amOrPm: alarms[i].amOrPm)
   // this is my own function I made, the result intHour, and intMinute (ignore time1) are of type int. intHour is always between 0 and 23, intMinute is always between 0 and 59
   let gregorian = Calendar(identifier: .gregorian)
   var components = gregorian.dateComponents([.year, .month, .day, .hour, .minute, .second], from: dateOpened)
   components.hour = intHour
   components.minute = intMinute
   var myDate = gregorian.date(from: components)
   print(myDate)
   // 2017-11-04 4:13:20 PM +0000
   myDate = Calendar.current.date(byAdding: .day, value: 1, to: myDate)
   print(myDate)
   // 2017-11-05 5:13:20 PM +0000
}

如您所见,它确实为myDate增加了一天,但也增加了一小时。有人知道它为什么这样做,或者我如何避免它增加额外的时间吗?我只是想给变量myDate加上一天。我尝试指定格雷戈里的时区,但没有效果。

请发布完整的工作代码。我无法复制,可能是时区问题。
let today=Date()/“2017年11月4日下午1:10”let newDate=Calendar.current.Date(通过添加:.day,value:1,to:today)/“2017年11月5日下午1:11”
使用了此选项。正如大家所建议的那样,这种方法是有效的。如果您发布完整的代码,我们可能会帮助调试。但这种方法返回的值不是错误的。我添加了我的完整方法,因为每个人都建议你是否生活在夏时制在11月5日改变的国家?是的,我住在美国。我想问题(其实不是问题)是整个夏令时的问题。谢谢大家!请张贴完整的工作代码。我无法复制,可能是时区问题。
let today=Date()/“2017年11月4日下午1:10”let newDate=Calendar.current.Date(通过添加:.day,value:1,to:today)/“2017年11月5日下午1:11”
使用了此选项。正如大家所建议的那样,这种方法是有效的。如果您发布完整的代码,我们可能会帮助调试。但这种方法返回的值不是错误的。我添加了我的完整方法,因为每个人都建议你是否生活在夏时制在11月5日改变的国家?是的,我住在美国。我想问题(其实不是问题)是整个夏令时的问题。谢谢大家!