我手动创建了一个 future 的日期,代码如下:
[[NSDate date] dateByAddingTimeInterval: s + 60*m + 60*60*h ];
我为“s”传递了 2,为“m”和“h”传递了 0。结果是一个 NSDate 对象,正好是 future 2 秒。
然后在几个函数调用之后,我尝试使用 NSDateComponentsFormatter 获取该日期的字符串。我调用以下电话:
NSCalendar* calendar = [NSCalendar currentCalendar];
calendar.locale = self.locale;
calendar.timeZone = self.timeZone;
NSCalendarUnit units = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents* deltaComponents = [calendar components:units fromDate:[NSDate date] toDate:to options:0];
deltaComponents.calendar = calendar;
NSString *result = [self.componentFormatter stringFromDateComponents:deltaComponents];
问题是我打电话的时候
[calendar components:units fromDate:[NSDate date] toDate:to options:0];
时间上发生了非常小的变化!像这样设置日志,向我们展示了问题:
NSLog(@"TIME INTERVAL SINCE NOW: %@",@([date timeIntervalSinceNow]));
1.998730003833771
结果字符串:
“1秒”
在这里你可以看到我的沮丧。我希望 NSDateComponentsFormatter 将这个小差异四舍五入为“2 秒”,但我不知道该怎么做。
最佳答案
Then a few function calls later,... The problem is that by the time...
只需在调用 datebyAddingTimeInterval
之前保存 [NSDate date]
的原始值,然后使用该值而不是再次调用 [NSDate date]
.
任何四舍五入的尝试听起来都像是“捏造因素”,而且它们永远都不好用。
关于ios - NSDateComponentsFormatter future 时间 +1.998730003833771 结果为 "1 second"字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34502480/