Ios 将24小时添加到NSDate

Ios 将24小时添加到NSDate,ios,swift,parse-platform,Ios,Swift,Parse Platform,我正在尝试将24小时添加到当前日期,然后保存在Parse中。我真的这么做了,它还可以工作,但我想我调整了一些东西并破坏了它,因为现在未来时间存储在Parse中作为当前时间 这是我的密码: let futureTime = NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.Hour, value: 24, toDate: NSDate(), options: NSCalendarOptions.WrapComponents)

我正在尝试将24小时添加到当前日期,然后保存在Parse中。我真的这么做了,它还可以工作,但我想我调整了一些东西并破坏了它,因为现在未来时间存储在Parse中作为当前时间

这是我的密码:

let futureTime = NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.Hour, value: 24, toDate: NSDate(), options: NSCalendarOptions.WrapComponents)
myObject.setObject(futureTime!, forKey: "futureTime")
答复:


只需将装置切换到.Day而不是.Hour,并添加“1”而不是“24”。不知道为什么24小时不起作用。

这会在日期上增加一天:

let components: NSDateComponents = NSDateComponents()
components.setValue(1, forComponent: NSCalendarUnit.Day);

let date: NSDate = NSDate()
let tomorrowDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: date, options: NSCalendarOptions(rawValue: 0))

希望这有帮助

不要增加24小时,而是增加等效的1天:

let futureTime = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 1, toDate: NSDate(), options: [])
或-要解决实际问题,请删除选项

let futureTime = NSCalendar.currentCalendar().dateByAddingUnit.Hour, value: 24, toDate: NSDate(), options: [])

此外,您可以删除
NSCalendarUnit.Hour
中的
NSCalendarUnit
,当您将
选项指定为
NSCalendarOptions.WrapComponents
时,它将不起作用。只指定
NSCalendarOptions()

如果指定了
.WrapComponents
,则单元中的溢出不会带入更高的单元。这意味着改变时间不会改变任何其他组件


增加1天而不是24小时对大多数情况都有效,但这不是一个真正的解决办法。当您在12月30日使用该代码时,您将遇到完全相同的问题-以天为单位的更改不会计入年。您必须修复
选项

您是否尝试过添加一天而不是24小时?只是一个一般性的建议,不知道它是否能解决你的问题,只是尝试了一下,效果不错,谢谢@cb428只需为选项[]传递一个空数组。问题是您使用了
WrapComponents
选项,该选项专门告诉日历不要在小时结束时增加日期。但最好是添加一天而不是24小时,因为添加24小时可能会在夏令时激活或停用的日期给您一个意外的答案。请注意,添加24小时可能会在夏令时激活或停用的日期给您一个意外的答案。@robmayoff-hmm,这一点你可能是对的——不过,增加一天“解决”这个问题吗?时间真的会保持不变,只增加一天吗?这意味着未来的时间将是25或23小时?今天上午7点加上一天=明天上午7点。将来可能是24小时、25小时或23小时,今天上午7点加上24小时=明天上午7点、6点或8点,但将来永远是24小时。@gnasher729好的,如果这是他们内部的工作方式,谢谢你们两位的澄清。请评论我的回答有什么问题?