如何为NSDate添加小时数?

Rah*_*yas 49 objective-c nsdate iphone-sdk-3.0

我有一个转换为double值的日期并保存在数据库中.现在,我想比较currentDate > myDataBaseDate + 8几小时,即我希望将8小时添加到myDataBaseDate.我正在将日期转换为双倍值.那么如何从我的数据库保存日期开始8小时后.我该如何比较

if (currentDateTime > DateFromdatabaseValue + DateByAdding8HoursInDataBase)
Run Code Online (Sandbox Code Playgroud)

Tom*_*rys 147

我不完全确定你要做什么,但你可以通过使用以下方法在几秒钟内将时间添加到另一个NSDate来创建NSDate对象:

- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds

//例如 添加8小时到当前时间:

NSDate *mydate = [NSDate date];
NSTimeInterval secondsInEightHours = 8 * 60 * 60;
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours];
Run Code Online (Sandbox Code Playgroud)

  • 如果精度对您很重要,请避免使用此类日期数学.你不能假设一分钟60秒,也不能假设一小时60分钟.NSCalendar的存在是为了抽象出所有那些极端情况(例如闰秒). (4认同)

Ben*_*ard 18

从iOS 8开始,更方便dateByAddingUnit:

//add 8 hours
let calendar = NSCalendar.autoupdatingCurrentCalendar()
newDate = calendar.dateByAddingUnit(.CalendarUnitHour, value: 8, toDate: originalDate, options: nil)
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,感谢上面的回答和评论. (6认同)