Ich glaube nicht, dass dies Ihnen eine absolute Anzahl von Stunden geben wird. Sie erhalten nur einen Wert zwischen 0 und 24, bei dem Sie sich auf die Komponenten Tag, Monat und Jahr verlassen müssen, um das vollständige Zeitintervall zu erhalten.
Codeperson
Ich habe das getestet und es funktioniert einwandfrei. Mit Datum vom 1. Januar 2012 und Datum 4. Januar 2012 wurden 96 Stunden zurückgegeben.
Thomas Müller
Code posten Thomas? Bei manchen funktioniert es nicht.
John Riselvato
Antworten:
170
Die NSDate- Funktion timeIntervalSinceDate: gibt Ihnen die Differenz von zwei Daten in Sekunden an.
Ändern Sie die benötigten Komponenten in Tag, Stunde oder Minute, je nachdem, welchen Unterschied Sie möchten. Wenn NSDayCalendarUnitdiese Option ausgewählt ist, wird die Anzahl der Tage zwischen zwei Daten ähnlich für NSHourCalendarUnitund zurückgegebenNSMinuteCalendarUnit
Swift 4 Version
let cal =Calendar.current
let 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!
Welchen Wert akzeptiert dateWithTimeIntervalSince1970? Ich glaube, Sie haben das Datum 2012-06-22 in 1340323201 konvertiert. Bitte korrigieren Sie mich.
Jeet
Ich arbeite nicht für mich. Der Diff-Wert wurde als 9223372036854775807 angegeben. Ist er in Millisekunden angegeben?
Kirti Nikam
Swift 4.2. Anstelle von [.hour] können Sie Set <Calendar.Component> ([. Hour])
Nein, tu das nicht. Nicht alle Stunden haben 3600 Sekunden. Nicht alle Tage haben 24 Stunden.
rmaddy
5
Das ist völlig falsch. Berücksichtigt keine Schaltsekunden, Sommerzeit. Bitte erfinden Sie das Rad nicht neu. Verwenden Sie nur die mit iOS bereitgestellten APIs wie NSDateComponents.
Juan Catalan
5
Kasse: Es kümmert sich um die Sommerzeit, Schaltjahr, da es iOS-Kalender zur Berechnung verwendet. Sie können die Zeichenfolge und die Bedingungen so ändern, dass sie Minuten mit Stunden und Tagen enthalten.
Es zeigt nicht mehr als 12 Stunden Unterschied. Wenn ich einige Bedingungen nach 23 Stunden überprüfen möchte, wie kann ich dann einen Unterschied von 23 Stunden zwischen den Zeiten feststellen?
Moxarth
Es gibt ein falsches Zeitintervall und funktioniert bei mir nicht.
NSCalendar
der-components:fromDate:toDate:options:
Methode.Antworten:
Die NSDate- Funktion timeIntervalSinceDate: gibt Ihnen die Differenz von zwei Daten in Sekunden an.
Weitere Informationen finden Sie in der Apple-Referenzbibliothek unter http://developer.apple.com/library/mac/navigation/. Wenn Sie Xcode verwenden, wählen Sie einfach Hilfe / Dokumentation aus dem Menü.
Siehe: So konvertieren Sie ein nstimeinterval-Sekunden-in-Minuten
--edit: In der Antwort von ÐąrέÐέvil unten finden Sie Informationen zum korrekten Umgang mit Sommerzeit / Schaltsekunden
quelle
Ändern Sie die benötigten Komponenten in Tag, Stunde oder Minute, je nachdem, welchen Unterschied Sie möchten. Wenn
NSDayCalendarUnit
diese Option ausgewählt ist, wird die Anzahl der Tage zwischen zwei Daten ähnlich fürNSHourCalendarUnit
und zurückgegebenNSMinuteCalendarUnit
Swift 4 Version
quelle
quelle
Kasse: Es kümmert sich um die Sommerzeit, Schaltjahr, da es iOS-Kalender zur Berechnung verwendet. Sie können die Zeichenfolge und die Bedingungen so ändern, dass sie Minuten mit Stunden und Tagen enthalten.
quelle
Für diejenigen, die Swift 3 und höher verwenden,
quelle