【发布时间】:2014-04-27 21:17:54
【问题描述】:
如何找到两个 NSDate 之间的差异,但忽略日期而只关心时间?
到目前为止,我已经找到了很多计算 NSDates 之间差异的解决方案,但没有一个解决方案忽略日期而只关心时间。
例如,01/01/01 04:35 PM 和 01/09/09 04:36 PM 之间的差是 1 分钟
【问题讨论】:
如何找到两个 NSDate 之间的差异,但忽略日期而只关心时间?
到目前为止,我已经找到了很多计算 NSDates 之间差异的解决方案,但没有一个解决方案忽略日期而只关心时间。
例如,01/01/01 04:35 PM 和 01/09/09 04:36 PM 之间的差是 1 分钟
【问题讨论】:
与所有与 iOS 相关的日期计算一样,NSCalendar 已经为您提供了保障!具体来说,您希望使用components:fromDate:toDate:options: 并将NSWrapCalendarComponents 作为选项传递,这将防止组件溢出到更高日期的组件中。
【讨论】:
试试这个:
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 没有意义。
return components.hour * 3600 + components.minute * 60 + components.second;