为NSDate增加24小时

时间:2015-12-27 23:09:48

标签: ios swift parse-platform

我试图将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不会工作。

3 个答案:

答案 0 :(得分:3)

而不是添加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

中的NSCalendarUnit.Hour

答案 1 :(得分:0)

这会在日期上添加一天:

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))

希望这有帮助

答案 2 :(得分:0)

options指定为NSCalendarOptions.WrapComponents时,它将无效。请改为仅指定NSCalendarOptions()

当指定.WrapComponents时,单位中的溢出不会被带入更高的单位。这意味着更改小时数不会改变任何其他组件。

对于大多数情况,添加1天而不是24小时将起作用,但这不是真正的修复。在12月30日使用该代码时,您将遇到完全相同的问题 - 天数的变化将不会持续数年。您必须修复options