我试图获得两个NSDates之间的时差。
NSDate *d1 = somedate;
NSDate *d2 = someOtherdate;
NSTimeInterval sec = [d2 timeIntervalSinceDate:d1];
NSTimeInterval的准确度如何? 它是否会照顾一个月内天数的变化,例如天数是28,29,30还是31天?还有时区差异?
答案 0 :(得分:3)
NSTimeInterval
实际上只是一个typedeffed double
。由于NSDate
表示单个时间点(与时区,日历等无关),NSTimeInterval
表示两个日期(时间点)之间的秒数。
答案 1 :(得分:3)
的准确程度
NSTimeInterval
在平台上,我知道他们有Cocoa,NSTimeInterval
的类型为double
,
是否会照顾一个月内天数的变化?
这不是NSTimeInterval
,它是类型。这是处理所有这些偏差的各种类(NSDate
,无论如何)。他们做得非常好。
答案 2 :(得分:2)
NSTimeInterval
实际上只是double
的typedef。
NSDate
封装了一个时间间隔,并提供了与之交互的界面。
如果您希望将该日期引用到我们的实际日历,则必须使用NSCalendar
和NSDateComponents
类。
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
个对象始终位于同一时区。没有什么可以处理的。