2015-10-16 116 views
0

当我比较从10月25日开始到结束时,我得到89999秒(25小时)。NSDate.timeIntervalSinceDate没有节省时间的调整?

我使用下面的方法比较的日期:

endOfDay.timeIntervalSinceDate(startOfDay) 

然而,当我比较小时,我得到24 我用的NSDate以下扩展功能比较小时:

func differenceInHoursWith(date: NSDate) -> Int{ 
     let components = NSCalendar.currentCalendar().components(.Hour, fromDate: self, toDate: date, options: []) 
     return components.hour 
    } 

有没有办法在没有白天时间调整的情况下以秒为单位获得差异?在我的情况下,我不需要他们,我需要秒粒度。

+0

由于美国在那个日期将时钟恢复了一个小时,所以25小时是正确的。如果结果是24小时,则会短一个小时。它实际上是那么多秒。 –

+0

是的,它是正确的,但对于我的应用程序,我想忽略日光计算。 –

+0

这不是“计算”或“调整”,这两次实际上相隔25小时。如果您在开始时间开始计算秒数,则任何准确的时钟都需要25小时才能达到结束时间。该框架没有做一些神秘的计算,它给了你一个准确的结果。 –

回答

0

有3600秒,在一个小时,所以你可以采取的秒数和3600这里把它就是,做一个实现:

func differenceInHoursWith(date: NSDate) -> Int { 
    let seconds = self.timeIntervalSinceDate(date) 
    return Int(seconds/3600) 
} 

如果你想在差的绝对值,你可以这样做:

func differenceInHoursWith(date: NSDate) -> Int { 
    let seconds = self.timeIntervalSinceDate(date) 
    let hours = Int(seconds/3600) 
    return abs(hours) 
}