【问题标题】:iOS - Difference between two times (ignore dates) [duplicate]iOS - 两次之间的差异(忽略日期)[重复]
【发布时间】:2014-04-27 21:17:54
【问题描述】:

如何找到两个 NSDate 之间的差异,但忽略日期而只关心时间?

到目前为止,我已经找到了很多计算 NSDates 之间差异的解决方案,但没有一个解决方案忽略日期而只关心时间。

例如,01/01/01 04:35 PM 和 01/09/09 04:36 PM 之间的差是 1 分钟

【问题讨论】:

    标签: ios nsdate


    【解决方案1】:

    与所有与 iOS 相关的日期计算一样,NSCalendar 已经为您提供了保障!具体来说,您希望使用components:fromDate:toDate:options: 并将NSWrapCalendarComponents 作为选项传递,这将防止组件溢出到更高日期的组件中。

    【讨论】:

      【解决方案2】:

      试试这个:

      int (^timeFromDate)(NSDate *) = ^(NSDate *date) {
          NSCalendar *calendar = [NSCalendar currentCalendar];
          NSDateComponents *components = [calendar components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit
                                                     fromDate:date];
      
          return (components.hour * 60 + components.minute) * 60 + components.second;
      };
      int diff = timeFromDate(date1) - timeFromDate(date2);
      

      【讨论】:

      • 总和components.hour + components.minute + components.second 没有意义。
      • @JesseRusak 为什么?请解释一下?
      • 那么,时间 3:41:22 将返回 3 + 41 + 22 = 66。这有什么帮助?
      • 如果有的话,应该是:return components.hour * 3600 + components.minute * 60 + components.second;
      • @JesseRusak 你是对的,我的错,我已经更新了答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 2017-04-29
      • 2012-04-03
      相关资源
      最近更新 更多