Je ne crois pas que cela vous donnera un nombre absolu d'heures. Il ne vous donnera qu'une valeur comprise entre 0 et 24, où vous devrez vous fier aux composants Jour, Mois et Année pour obtenir l'intervalle de temps complet.
codeperson
J'ai testé cela et cela fonctionne très bien. Du 1er janvier 2012 au 4 janvier 2012, cela a retourné 96 heures.
Thomas Müller
postez votre code Thomas? Cela ne fonctionne pas pour certains.
John Riselvato
Réponses:
171
La NSDate fonction timeIntervalSinceDate: vous donnera la différence entre deux dates en quelques secondes.
Changez les composants nécessaires en jour, heure ou minute, quelle différence vous voulez. Si NSDayCalendarUnitest sélectionné, il renverra le nombre de jours entre deux dates de la même manière pour NSHourCalendarUnitetNSMinuteCalendarUnit
Version Swift 4
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!
Non, ne fais pas ça. Toutes les heures ne comptent pas 3600 secondes. Tous les jours n'ont pas 24 heures.
rmaddy
5
C'est totalement faux. Ne tient pas compte des secondes intercalaires, des économies d'heure d'été. Veuillez ne pas réinventer la roue, utilisez simplement les API fournies avec iOS comme NSDateComponents.
Juan Catalan
5
Caisse: Il prend en charge l'heure d'été, année bissextile, car il utilise le calendrier iOS pour calculer. Vous pouvez modifier la chaîne et les conditions pour inclure des minutes avec des heures et des jours.
il ne montre pas plus de 12 heures de différence. si je veux vérifier certaines conditions à 23 heures, comment obtenir 23 heures de différence entre les heures?
Moxarth
Cela donne un mauvais intervalle de temps, ne fonctionne pas pour moi.
NSCalendar
la-components:fromDate:toDate:options:
méthode de.Réponses:
La NSDate fonction timeIntervalSinceDate: vous donnera la différence entre deux dates en quelques secondes.
Voir, la bibliothèque de référence Apple http://developer.apple.com/library/mac/navigation/ ou si vous utilisez Xcode, sélectionnez simplement help / documentation dans le menu.
Voir: comment-convertir-un-nstimeinterval-secondes-en-minutes
--edit: Voir la réponse de ÐąrέÐέvil ci-dessous pour gérer correctement l'heure d'été / secondes intercalaires
la source
Changez les composants nécessaires en jour, heure ou minute, quelle différence vous voulez. Si
NSDayCalendarUnit
est sélectionné, il renverra le nombre de jours entre deux dates de la même manière pourNSHourCalendarUnit
etNSMinuteCalendarUnit
Version Swift 4
la source
la source
Caisse: Il prend en charge l'heure d'été, année bissextile, car il utilise le calendrier iOS pour calculer. Vous pouvez modifier la chaîne et les conditions pour inclure des minutes avec des heures et des jours.
la source
Pour ceux qui utilisent swift 3 et plus,
la source