J'ai vu ce post: iOS et trouver demain .
Le code fourni est : P>
NSDate *selectedDate = [picker2 date];
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;
NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:selectedDate toDate:[NSDate date] options:0];
DLog(@"%i",conversionInfo.month);
DLog(@"%i",conversionInfo.day);
conversionInfo.day +=1;
DLog(@"%i",conversionInfo.day);
DLog(@"%i",conversionInfo.month);
int months = [conversionInfo month];
6 Réponses :
formez un composant de date avec le nombre de jours que vous souhaitez ajouter à votre date d'origine. Depuis le calendrier actuel, la date en ajoutant la présente composante à votre date d'origine.
Solution simple et directe:
NSDate *currentDate = [NSDate date]; NSDate *nextDate = [currentDate dateByAddingTimeInterval:(24*3600)];
Une journée n'a pas toujours 86400 secondes. Ce calcul peut donner des résultats incorrects lors de la transition vers ou depuis l'heure d'été. - (La même réponse a déjà été donnée et supprimée plus tard.)
Voici une méthode que j'utilise: avec elle, vous pouvez ajouter autant de jours que vous le souhaitez. Cela fonctionne également avec des nombres négatifs, afin que vous puissiez soustraire des jours. P> p>
Pour Swift Googlers:
NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.CalendarUnitDay, value: 1, toDate: date, options: nil)!
première chose, vous attribuez une journée au lieu de mois à Nsdatecomonent. Exécutez le code suivant et recherchez la différence entre INDATE et NEWDATE
// Retrieve date with increased days count
NSDate *newDate = [[NSCalendar currentCalendar]
dateByAddingComponents:components
toDate:monthFlag
options:0];
Pour ajouter n'importe quel nombre de composants à la date, par exemple: 2 jours ou 2 mois, 1 an, procédez comme suit: vous pouvez initialiser datecomponents Code> avec quoi que ce soit: p>
Si vous voulez juste ajouter une journée à aujourd'hui, faites ceci:
nsdate * demain = [nsdate dateWithTimeInterval: (24 * 60 * 60) Sincedate: [Nsdate Date]]; Code> Ceci ajoute 24 * 60 * 60 secondes à la date donnée et renvoie une nouvelle date.Merci pour la réponse rapide. travaillé ... Ajouter comme une réponse .. va marquer le bien ..
Je ne comprends pas la dernière phrase de votre question. Pourquoi la différence entre le 21 juin 2013 et le 20 juin 2013 devrait-elle être 1 mois?
Toutes mes excuses sur la dernière partie .. Tapé à tort ...
@Lakesh: OK. Mais la différence entre le 21 juin 2013 et le 21 mai 2013 donne i> un mois (je l'ai testée). Le problème pourrait être que les deux dates ont des moments différents. Par exemple, la différence entre "21e juin 2013 00:00" et "21e mai 2013 00:30" donne 30 jours, 23 heures, 30 minutes et 0 mois b>. Donc, peut-être que vous devez normaliser les dates à minuit d'abord.
@Martinr merci beaucoup .. va vérifier cela ...
Ne sélectionnez-vous que par jour avec le sélecteur ou la journée / heure / la minute? Quel résultat attendez-vous si l'horodatage actuel est "21 juin 2013 10:00" et la date sélectionnée est "21e août 2013 9:00"? En d'autres termes, voulez-vous calculer la différence pour le début de la journée actuelle i> ou la différence dans le horodatage actuel i>?