【问题标题】:How to add hours to an NSDate?如何将小时数添加到 NSDate?
【发布时间】:2010-12-11 21:10:12
【问题描述】:

我将日期转换为双精度值并保存在数据库中。现在,我想比较 currentDate > myDataBaseDate + 8 小时,即我想将 8 小时添加到 myDataBaseDate。我正在将日期转换为双精度值。那么如何从我的数据库保存日期获得 8 小时后的时间。如何比较

if (currentDateTime > DateFromdatabaseValue + DateByAdding8HoursInDataBase)

【问题讨论】:

    标签: objective-c iphone-sdk-3.0 nsdate


    【解决方案1】:

    我不完全确定您要做什么,但是您可以通过将时间(以秒为单位)添加到另一个 NSDate 来创建一个 NSDate 对象:

    - (id)dateByAddingTimeInterval:(NSTimeInterval)seconds

    // 例如。为当前时间增加 8 小时:

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

    【讨论】:

    • 如果精度对您很重要,请避免使用这种日期数学。你不能假设一分钟有 60 秒,也不能假设一小时有 60 分钟。 NSCalendar 的存在是为了抽象出所有这些极端情况(例如闰秒)。
    • tnks 好友...我找到的最佳答案
    • @BenPackard 在这种情况下你的解决方案是什么?
    • @circuitry 它发布在下面 - stackoverflow.com/a/30152081/225253
    【解决方案2】:

    iOS 8 以后有更方便的dateByAddingUnit

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

    【讨论】:

    • 这应该是公认的答案,感谢上面的回答和评论。
    【解决方案3】:

    你可以简单地使用:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        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];
        

        【讨论】:

          【解决方案6】:

          Swift 3.X简单使用

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

          【讨论】:

            猜你喜欢
            • 2017-09-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多