2009-10-31 57 views
45

我有一个日期转换为double值并保存在数据库中。现在,我想比较是否currentDate > myDataBaseDate + 8小时,即,我想将8小时添加到myDataBaseDate。我将日期转换为双重值。那么我如何从我的数据库保存日期后8小时内获得。如何比较如何将小时添加到NSDate?

if (currentDateTime > DateFromdatabaseValue + DateByAdding8HoursInDataBase) 

回答

141

我不完全知道你正在尝试做的,但你可以通过使用添加时间,以秒到另一个的NSDate创建一个NSDate对象:

- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds

//如。将当前时间添加8小时:

NSDate *mydate = [NSDate date]; 
NSTimeInterval secondsInEightHours = 8 * 60 * 60; 
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours]; 
+3

如果精度对你很重要,避免使用这种日期数学。你不能在一分钟内假设60秒,也不能在一小时内假设60分钟。 NSCalendar存在抽象掉所有的角落案例(例如闰秒)。 – 2015-06-28 20:15:03

+0

tnks好友...最佳答案我找到 – Mehul 2015-08-11 05:36:42

+0

@BenPackard在这种情况下你的解决方案是什么? – circuitry 2016-09-05 21:55:10

0

您可以简单地添加8 * 3600到您的数据库值(假设你的转换双值表示秒)。

0

NSDate * startdate = datePicker.date;

NSTimeInterval secondsInOneHours = 1 * 60 * 60; 

    NSDate *dateOneHoursAhead = [startdate dateByAddingTimeInterval:secondsInOneHours]; 

    [dateformate setDateFormat:@"d-MMM-yy HH:mm:ss"]; 

    strDate = [dateformate stringFromDate:dateOneHoursAhead]; 
2

您可以简单地使用:

NSDate *incrementedDate = [NSDate dateWithTimeInterval:numberOfSeconds sinceDate:[NSDate date]]; 
12

由于iOS 8的存在更方便dateByAddingUnit

//add 8 hours 
let calendar = NSCalendar.autoupdatingCurrentCalendar() 
newDate = calendar.dateByAddingUnit(.CalendarUnitHour, value: 8, toDate: originalDate, options: nil) 
+3

这应该是接受的答案,感谢上面的回答和评论。 – woody121 2017-02-03 04:32:10

0

斯威夫特3.X简单的用法

let calendar = NSCalendar.autoupdatingCurrent 
let newDate = calendar.date(byAdding: .hour, value: 8, to: Date())