我正在计算startTime和endTime之间的持续时间,并使用以下代码来获取两个NSDates之间的时间间隔
NSTimeInterval duration = [self.endTime timeIntervalSinceDate:self.startTime];
NSLog(@"interval: %f", duration);
然而,NSLog语句告诉我持续时间错误。日期来自datePicker。例如,当我将开始日期设置为2013年6月19日晚9:15,结束日期为2013年6月19日,2013年9月16日(一分钟后)时,记录的持续时间为15.00000而不是60.00000。
这是为什么?如何在两个日期之间获得正确的持续时间?
修改
我做了一些记录并记录了开始日期和结束时间。这是NSLog语句
NSLog(@"interval: %f for %@ to %@", duration, self.startTime, self.endTime);
以及记录的内容:
interval: 15.000000 for 2013-06-19 04:52:45 +0000 to 2013-06-19 04:53:00 +0000
由于某种原因,datePicker的开始日期是将秒数设置为45,即使日期选择器只是说4:52。我怎样才能解决这个问题?
另外,作为注释,如果完全重要,则使用相同的datePicker来选择两个日期。
答案 0 :(得分:1)
在选择时间时,问题实际上似乎是UIDatePicker
的“功能”。尽管它只显示小时和分钟,但时间包括当前的秒数。我个人认为这是日期选择器中的一个错误。
您最好的解决方案是调整从日期选择器返回的值。
这是确保日期为0秒的一种方法:
- (NSDate *)truncateSeconds:(NSDate *)pickerDate {
NSTimeInterval secs = [pickerDate timeIntervalSinceReferenceDate];
long truncated = secs / 60 * 60;
return [NSDate dateWithTimeIntervalSinceReferenceDate:truncated];
}