J'aimerais faire un compte à rebours à la prochaine heure complète. Il est assez facile de compter à rebours à un moment précis, comme: Comment puis-je définir un nsdate pour "le début de chaque heure"? P> Merci! P> Merci! P > Edit: Voici ce que j'ai actuellement. Avoir du mal à intégrer les solutions à mon code. Toute aide serait grandement appréciée. :) p>
6 Réponses :
comme + datewithnaturalangangangsestring code> est disponible sur MacOS SDK et votre iPhone ciblant que vous devrez faire une méthode. Je pense que
nscalendar code> classe peut vous aider:
- (NSDate*) nextHourDate:(NSDate*)inDate{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components: NSEraCalendarUnit|NSYearCalendarUnit| NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit fromDate: inDate];
[comps setHour: [comps hour]+1]; // Here you may also need to check if it's the last hour of the day
return [calendar dateFromComponents:comps];
}
Le code donné fonctionnera actuellement (même si l'heure suivante est minuit), mais je pense que vous devriez utiliser techniquement les DateByAddingComponents: TODATE: CODE> Au lieu d'ajouter manuellement les composants. Nscalendar est la bonne réponse, cependant.
Oui DateDeaddingComponents: Todate semble plus approprié, mais vous devez toujours réinitialiser la minute et la deuxième composantes à 0 en quelque sorte?
Qu'est-ce qui ne fonctionne pas exactement? Je viens de courir ce code - ça marche bien pour moi (je ne sais toujours pas si cela fonctionnera au cas où la prochaine heure est minuit)
Bonjour Vladimir .. J'ai ajouté quelques détails à ma question initiale. Thassk!
Remplacez Datwithnaturalangangstring Call avec appel à NexThaourdate?
Vous voudrez peut-être vérifier cela. Erica Sadun a posté quelques extensions à Nsdate. P>
Extension très utile, mais cela n'aide pas à la question de l'OP.
Je pense que cela fonctionnerait (note: très brièvement testé)
Veuillez vérifier votre code avant de le soumettre. "Je pense que ..." n'est pas bon.
La manière la plus simple probablement de manipuler l'horodatage, autour du début de l'heure actuelle et d'ajouter 1 heure
Nice fonctionne également pendant une demi-heure à la prochaine heure ou dans dix minutes, changez simplement la 3600 et à la suite des secondes.
Utilisation de datecomponents et de date, vous l'obtenez en ajoutant une quantité négative de minutes et une heure à la date donnée.
swift3 (comme une extension): p> Voir Apple Guide de programmation de la date et de l'heure pour référence. P> =============== ========================================================== ========== P> ObjectiveC (comme méthode statique): p> et appelez-le avec: p> < Pré> xxx pré> p> Laissez NexThaourdate = mydate.nexthaour code> p>
Devrait être juste des composants.hour = 1; Comme nous ajoutons les heures, nous ne les remplaçons pas.
Le code SWIFT devrait avoir des minutes négatives, comme l'obj-C.
Peut-être que cela peut être utile - (NSTIMITILERVAL) db_secondsfornexthaour { p> } p> p>