Nie wierzę, że da ci to absolutną liczbę godzin. Podaje tylko wartość od 0 do 24, gdzie musisz polegać na składnikach Dzień, Miesiąc i Rok, aby uzyskać pełny przedział czasu.
codeperson
Przetestowałem to i działa dobrze. W przypadku fromDate 1 / Jan / 2012 i toDate 4 / Jan / 2012 zwracało to 96 godzin.
Thomas Müller
wyślij swój kod Thomas? Dla niektórych to nie działa.
John Riselvato
Odpowiedzi:
171
NSDate funkcja timeIntervalSinceDate: daje różnicę dwiema datami w sekundach.
Zmień potrzebne składniki na dzień, godzinę lub minutę, którą chcesz. Jeśli NSDayCalendarUnitjest zaznaczone, zwróci liczbę dni między dwiema datami podobnie dla NSHourCalendarUnitiNSMinuteCalendarUnit
Wersja Swift 4
let cal =Calendar.currentlet d1 =Date()let d2 =Date.init(timeIntervalSince1970:1524787200)// April 27, 2018 12:00:00 AMlet components = cal.dateComponents([.hour],from: d2, to: d1)let diff = components.hour!
Nie, nie rób tego. Nie wszystkie godziny mają 3600 sekund. Nie wszystkie dni mają 24 godziny.
rmaddy
5
To jest całkowicie błędne. Nie uwzględnia sekund przestępnych, czasu letniego. Nie wymyślaj na nowo koła, po prostu użyj interfejsów API dostarczonych z systemem iOS, takich jak NSDateComponents.
Juan Catalan
5
Zamówienie: Dba o czas letni, rok przestępny, ponieważ do obliczeń używał kalendarza iOS. Możesz zmienić ciąg i warunki, aby obejmowały minuty z godzinami i dniami.
NSCalendar
„s-components:fromDate:toDate:options:
metody.Odpowiedzi:
NSDate funkcja timeIntervalSinceDate: daje różnicę dwiema datami w sekundach.
Zobacz bibliotekę referencyjną Apple http://developer.apple.com/library/mac/navigation/ lub, jeśli używasz Xcode, po prostu wybierz pomoc / dokumentację z menu.
Zobacz: jak-konwertować-an-nstimeinterval-sekundy-na-minuty
--edit : Zobacz odpowiedź ÐąrέÐέvil poniżej, aby poprawnie obsługiwać czas letni / sekundy przestępne
źródło
Zmień potrzebne składniki na dzień, godzinę lub minutę, którą chcesz. Jeśli
NSDayCalendarUnit
jest zaznaczone, zwróci liczbę dni między dwiema datami podobnie dlaNSHourCalendarUnit
iNSMinuteCalendarUnit
Wersja Swift 4
źródło
źródło
Zamówienie: Dba o czas letni, rok przestępny, ponieważ do obliczeń używał kalendarza iOS. Możesz zmienić ciąg i warunki, aby obejmowały minuty z godzinami i dniami.
źródło
Dla tych, którzy używają swift 3 i nowszych wersji,
źródło