j'ai 2 NSDates qui définissent une période, on pourrait les mettre comme çade Split NSDate qui s'étend sur plusieurs jours dans plusieurs travées
spanA: 12:00 today
spanB: 12:00 tomorrow
Cela équivaut à 24 heures, mais je dois créer deux gammes au lieu de un, de sorte qu'aucune travée ne s'étende à minuit. Le résultat de l'exemple ci-dessus ressemblerait à ceci:
spanA: 12:00 today
spanB: 23:59 today
spanC: 00:01 tomorrow
spanD: 12:00 tomorrow
Je ne suis pas sûr comment faire ceci. Je suis venu avec une idée d'utiliser une fonction comme ceci:
- (NSInteger)daysBetweenDate:(NSDate *)fromDateTime andDate:(NSDate *)toDateTime
{
NSDate *fromDate;
NSDate *toDate;
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar rangeOfUnit:NSCalendarUnitDay startDate:&fromDate
interval:NULL forDate:fromDateTime];
[calendar rangeOfUnit:NSCalendarUnitDay startDate:&toDate
interval:NULL forDate:toDateTime];
NSDateComponents *difference = [calendar components:NSCalendarUnitDay
fromDate:fromDate toDate:toDate options:0];
return [difference day];
}
qui retourne combien de jours la durée étend à travers, ou en d'autres termes: le nombre de portées nécessaires. Ensuite, je pourrais par exemple boucler le nombre de jours et ajouter une certaine logique pour créer les intervalles nécessaires.
J'utilise cela comme une structure pour les travées:
typedef struct
{
NSTimeInterval start;
NSTimeInterval end;
} span;
Quelle serait la meilleure approche pour cela?
Vous pouvez utiliser ce framework (https://github.com/abdullah-chhatra/iDate) pour faciliter l'implémentation de cet algorithme. – Abdullah
pensé à cela aussi, en train de mettre en œuvre – Erik