计算 2 个 NSDate 之间的时间(以秒为单位)
Calculate time in seconds between 2 NSDates
我无法计算 "old" 和 "now" NSDate
的输出。这是代码:
NSLog(@"past is %@", past);
NSDate *now = [NSDate date];
NSLog(@"Now time is is %@", now);
NSTimeInterval distanceBetweenDates = [now timeIntervalSinceDate:past];
double secondsInAnHour = 3600;
NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;
NSLog(@" Time between is %i", hoursBetweenDates);
控制台输出如下:
2015-11-11 18:52:35.608 TaskTimer[2578:130664] past is 2015-11-11 15:52:02 +0000
2015-11-11 18:52:35.608 TaskTimer[2578:130664] now is 2015-11-11 15:52:35 +0000
2015-11-11 18:52:35.609 TaskTimer[2578:130664] Time between is 0
我想补充一点,即使两个值之间的时间超过几分钟,最后一个值也是 0。为什么是 0?
因为您要转换为整数并且它会向下舍入。任何小于特定整数值的值都会向下舍入。几分钟小于 1,所以你会得到 0 小时。
如果您想四舍五入到最接近的值,则使用 round(distanceBetweenDates / secondsInAnHour)
,或者要四舍五入,您可以使用 ceil(distanceBetweenDates / secondsInAnHour)
(尽管它也会将 2.1 舍入到 3)
你们两个约会之间相隔了 33 分钟,不到一小时。
NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;
该语句正在丢失小数精度,并向下舍入为 0,这就是您所显示的。
另一种方法是使用 NSDateComponentsFormatter
以 hh:mm:ss 格式显示
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute |
NSCalendarUnitSecond;
NSLog(@"Time between is %@", [formatter stringFromTimeInterval:distanceBetweenDates]);
我无法计算 "old" 和 "now" NSDate
的输出。这是代码:
NSLog(@"past is %@", past);
NSDate *now = [NSDate date];
NSLog(@"Now time is is %@", now);
NSTimeInterval distanceBetweenDates = [now timeIntervalSinceDate:past];
double secondsInAnHour = 3600;
NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;
NSLog(@" Time between is %i", hoursBetweenDates);
控制台输出如下:
2015-11-11 18:52:35.608 TaskTimer[2578:130664] past is 2015-11-11 15:52:02 +0000
2015-11-11 18:52:35.608 TaskTimer[2578:130664] now is 2015-11-11 15:52:35 +0000
2015-11-11 18:52:35.609 TaskTimer[2578:130664] Time between is 0
我想补充一点,即使两个值之间的时间超过几分钟,最后一个值也是 0。为什么是 0?
因为您要转换为整数并且它会向下舍入。任何小于特定整数值的值都会向下舍入。几分钟小于 1,所以你会得到 0 小时。
如果您想四舍五入到最接近的值,则使用 round(distanceBetweenDates / secondsInAnHour)
,或者要四舍五入,您可以使用 ceil(distanceBetweenDates / secondsInAnHour)
(尽管它也会将 2.1 舍入到 3)
你们两个约会之间相隔了 33 分钟,不到一小时。
NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;
该语句正在丢失小数精度,并向下舍入为 0,这就是您所显示的。
另一种方法是使用 NSDateComponentsFormatter
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute |
NSCalendarUnitSecond;
NSLog(@"Time between is %@", [formatter stringFromTimeInterval:distanceBetweenDates]);