2015-10-16 35 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) 
}