NSTimeInterval的准确度如何

时间:2013-03-29 04:46:38

标签: ios nsdate nstimeinterval

我试图获得两个NSDates之间的时差。

NSDate *d1 = somedate;
NSDate *d2 = someOtherdate;
NSTimeInterval sec = [d2 timeIntervalSinceDate:d1];

NSTimeInterval的准确度如何? 它是否会照顾一个月内天数的变化,例如天数是28,29,30还是31天?还有时区差异?

4 个答案:

答案 0 :(得分:3)

NSTimeInterval实际上只是一个typedeffed double。由于NSDate表示单个时间点(与时区,日历等无关),NSTimeInterval表示两个日期(时间点)之间的秒数。

答案 1 :(得分:3)

  

NSTimeInterval

的准确程度

在平台上,我知道他们有Cocoa,NSTimeInterval的类型为double

  

是否会照顾一个月内天数的变化?

这不是NSTimeInterval,它是类型。这是处理所有这些偏差的各种类(NSDate,无论如何)。他们做得非常好。

答案 2 :(得分:2)

NSTimeInterval实际上只是double的typedef。

NSDate封装了一个时间间隔,并提供了与之交互的界面。

如果您希望将该日期引用到我们的实际日历,则必须使用NSCalendarNSDateComponents类。

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];

然后你可以从组件对象中获取数据:

components.day
components.week
// etc

假设玛雅文化永远不会灭绝。这个正确的即时时间将由相同的NSDate对象表示,但通过不同的NSCalendar(如NSMayanCalendar),您将获得该日期的完全不同的表示。

答案 3 :(得分:1)

  

NSTimeInterval有多准确?

精确到毫秒(如果不是更多)。

  

是否会照顾一个月内天数的变化,例如天数是28,29,30还是31天?

是的,差异将以秒为单位。 NSDate处理一个月的实际天数以及闰年和夏令时等。

  

还有时区差异吗?

NSDate值始终以UTC格式存储,因此NSDate个对象始终位于同一时区。没有什么可以处理的。