NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"];
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"];
NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
int numberOfDays = secondsBetween / 86400;
NSLog(@"There are %d days in between the two dates.", numberOfDays);
ÉDITER:
N'oubliez pas que les NSDate
objets représentent des moments exacts, ils n'ont aucune information de fuseau horaire associée. Lorsque vous convertissez une chaîne en une date en utilisant par exemple un NSDateFormatter
, le NSDateFormatter
convertit l'heure à partir du fuseau horaire configuré. Par conséquent, le nombre de secondes entre deux NSDate
objets sera toujours indépendant du fuseau horaire.
De plus, cette documentation spécifie que l'implémentation du temps par Cocoa ne tient pas compte des secondes intercalaires, donc si vous avez besoin d'une telle précision, vous devrez lancer votre propre implémentation.
cocoa
et pascocoa-touch
si cette réponse ne s'applique qu'à Mac OS X.Vous pouvez utiliser quelque chose comme ceci:
Je crois que cette méthode tient compte de situations telles que les dates qui couvrent un changement d'heure d'été.
la source
NSDate
les objets sont déjà indépendants du fuseau horaire. Les informations de fuseau horaire sont supprimées lors de l'analyse des dates avec par exempleNSDateFormatter
, afin que lesNSDate
objets représentent des moments exacts dans le temps. Par conséquent, si vous avez déjàstartDate
etendDate
, ces deux objets seront séparés de x secondes. Les fuseaux horaires n'auront rien à voir avec cela.où
date1
etdate2
sontNSDate
.Notez également la définition de
NSTimeInterval
:la source
Vérifiez ceci. Il prend en charge l'heure d'été, année bissextile, car il utilisait le calendrier iOS pour calculer.Vous pouvez modifier la chaîne et les conditions pour inclure les minutes avec les heures et les jours.
la source
Avec Swift 5 et iOS 12, selon vos besoins, vous pouvez utiliser l'une des deux méthodes suivantes pour trouver la différence entre deux dates en jours.
#1. Utilisation de
Calendar
ladateComponents(_:from:to:)
méthode de# 2. Utilisation de
DateComponentsFormatter
lastring(from:to:)
méthode dela source
Swift 4
Essayez ceci et voyez (plage de dates avec chaîne):
Swift 3
la source
Vous pouvez trouver la différence en convertissant la date en secondes et prendre l'intervalle de temps depuis 1970 pour cela, puis vous pouvez trouver la différence entre deux dates.
la source
Pour trouver la différence, vous devez obtenir la date actuelle et la date future. Dans le cas suivant, j'ai utilisé 2 jours pour un exemple de date future. Calculé par:
2 days
*24 hours
*60 minutes
*60 seconds
. Nous prévoyons que le nombre de secondes en 2 jours sera de 172 800.la source