我正在尝试获取两个 NSDates 之间的时间差。
NSDate *d1 = somedate;
NSDate *d2 = someOtherdate;
NSTimeInterval sec = [d2 timeIntervalSinceDate:d1];
NSTimeInterval 的准确度如何?它是否考虑到一个月中天数的变化,例如天数是 28、29、30 或 31?还有时区差异?
我正在尝试获取两个 NSDates 之间的时间差。
NSDate *d1 = somedate;
NSDate *d2 = someOtherdate;
NSTimeInterval sec = [d2 timeIntervalSinceDate:d1];
NSTimeInterval 的准确度如何?它是否考虑到一个月中天数的变化,例如天数是 28、29、30 或 31?还有时区差异?
NSTimeInterval
实际上只是一个 typedefed double
。因为NSDate
表示单个时间点(与时区、日历等无关),NSTimeInterval
表示两个日期(时间点)之间的秒数。
准确度如何
NSTimeInterval
在我知道他们有 Cocoa 的平台上,NSTimeInterval
类型定义为double
,
它是否考虑到一个月中天数的变化?
不是NSTimeInterval
那样做的,它是一种类型。NSDate
处理所有这些偏差的是各种类( ,等等)。他们做得很好。
NSTimeInterval
实际上只是double
.
NSDate
封装了一个时间间隔,并提供了一个与之交互的接口。
如果您希望将该日期引用到我们的实际日历中,则必须使用NSCalendar
和NSDateComponents
类。
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];
然后你可以从组件对象中获取数据:
components.day
components.week
// etc
假设玛雅文化从未灭绝。这个正确的时刻将由相同的 NSDate 对象表示,但通过不同的NSCalendar
(如 a NSMayanCalendar
),您将获得该日期的完全不同的表示。
NSTimeInterval 的准确度如何?
它精确到毫秒(如果不是更多)。
它是否考虑到一个月中天数的变化,例如天数是 28、29、30 或 31?
是的,差异将以秒为单位。NSDate
处理一个月中的实际天数以及闰年和夏令时等。
还有时区差异?
NSDate
值始终以 UTC 格式存储,因此您的NSDate
对象始终位于同一时区。没有什么可处理的。