Je veux créer une fonction qui aboutit à la date de vendredi prochain mais je n'ai aucun plan comment le faire. Quelqu'un at-il un bon indice pour moi?iPhone NSDate par ex. prochain vendredi
Répondre
E.g. Obtenez la date actuelle en utilisant NSDate, puis utilisez 'components> fromDate:' de NSCalendar pour obtenir NSDateComponents, puis ajoutez le décalage horaire à vendredi prochain et créez un nouveau NSDate et Bob est votre oncle.
Je vais essayer de comprendre avec cette route. Bravo –
Voici ma solution, et juste pour vous avertir, un samedi est le vendredi avant montré. acclamations à tous
NSDate *today = [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:today];
int weekday = [weekdayComponents weekday];
int iOffsetToFryday = -weekday + 6;
weekdayComponents.weekday = iOffsetToFryday;
NSDate *nextFriday = [[NSCalendar currentCalendar] dateByAddingComponents:weekdayComponents toDate:today options:0];
Comment pouvez-vous considérer cela comme correct s'il renvoie la mauvaise réponse lors d'un samedi? –
je vois que ce n'est pas la bonne façon de gérer –
Voici ma solution de travail pour obtenir les 5 prochains dimanches calendrier grégorien:
self.nextBeginDates = [NSMutableArray array];
NSDateComponents *weekdayComponents = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
int currentWeekday = [weekdayComponents weekday]; //[1;7] ... 1 is sunday, 7 is saturday in gregorian calendar
NSDateComponents *comp = [[NSDateComponents alloc] init];
[comp setDay:8 - currentWeekday]; // add some days so it will become sunday
// build weeks array
int weeksCount = 5;
for (int i = 0; i < weeksCount; i++) {
[comp setWeek:i]; // add weeks
[nextBeginDates addObject:[[NSCalendar currentCalendar] dateByAddingComponents:comp toDate:[NSDate date] options:0]];
}
[comp release];
Cela devrait fonctionner
+ (NSDate *) dateForNextWeekday: (NSInteger)weekday {
NSDate *today = [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
// Get the weekday component of the current date
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit
fromDate:today];
/*
Add components to get to the weekday we want
*/
NSDateComponents *componentsToSubtract = [[NSDateComponents alloc] init];
NSInteger dif = weekday-weekdayComponents.weekday;
if (dif<=0) dif += 7;
[componentsToSubtract setDay:dif];
NSDate *beginningOfWeek = [gregorian dateByAddingComponents:componentsToSubtract
toDate:today options:0];
return beginningOfWeek;
}
Il ya effectivement un bug dans ce cas en fonction des exigences de la question. Si vous essayez d'obtenir la prochaine instance du jour de la semaine en cours (c'est-à-dire vendredi prochain un vendredi), elle finira par vous donner la date actuelle. La solution serait de changer 'dif <0'' 'dif <= 0'. – Dima
Gardez simple, sûr et lisible! (.... Kissar?)
#define FRIDAY 6
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
dayComponent.day = 1;
NSDate *nextFriday = [NSDate date];
NSInteger iWeekday = [[gregorian components:NSWeekdayCalendarUnit fromDate:nextFriday] weekday];
while (iWeekday != FRIDAY) {
nextFriday = [gregorian dateByAddingComponents:dayComponent toDate:nextFriday options:0];
iWeekday = [[gregorian components:NSWeekdayCalendarUnit fromDate:nextFriday] weekday];
}
maintenant nextFriday
a votre date.
Espérons que cela aide!
EDIT Notez que si la date du jour était déjà un vendredi, elle retournera cette valeur au lieu du vendredi suivant. Si cela n'est pas souhaitable, initez votre nextFriday
un jour plus tard (donc si la date actuelle était un vendredi, elle commencerait samedi, forçant le vendredi suivant.) Si la date actuelle était un jeudi, vous auriez automatiquement votre prochain vendredi sans avoir besoin de la boucle).
- 1. iPhone NSDate question
- 2. iphone sqlite NSDate bug
- 3. NSDate - GMT sur iPhone
- 4. NSDate -dateWithNaturalLanguageString: sur iPhone?
- 5. iPhone SDK NSString à NSDate
- 6. iphone NSDate avec NSDateFormatter problème
- 7. core-plot et NSDate (iPhone)
- 8. iPhone plist et NSDate émet
- 9. iPhone: Comment trier des dates avec NSDate?
- 10. Trier NSArray par NSDate, aujourd'hui
- 11. Rapports de crash iOS, par ex. pendant le test bêta
- 12. "Ce vendredi" dans le script bash
- 13. iPhone: GMT NSDate convertir à l'heure locale
- 14. Comment définir le NSDate sur iPhone?
- 15. iphone NSDate NSDateFormatter à un format ceratin
- 16. NSDate/NSCalendar Problème
- 17. objectif c et NSDate
- 18. Est-ce vendredi avec le format de date "c" retourné comme 5 ou 6?
- 19. iPhone: Conversion d'un horodatage Oracle en NSDate ou en un horodatage Unix (par exemple en double)
- 20. Comparer un NSDate à [date NSDate]
- 21. Utilisation de NSDate pour obtenir des dates
- 22. iPhone, puis-je créer des captures d'écran de qualité rétine sans iPhone 4, par ex. simulateur peut-être?
- 23. Comment déterminer quelle date est le vendredi?
- 24. iPhone Objective-C convertir la chaîne à NSDate * cas spécial
- 25. convertir époque temps à NSDate dans le cacao/iPhone
- 26. Type de données datetime sqlite avec iphone NSdate?
- 27. Bonne façon de convertir la chaîne en NSDate (iphone)
- 28. Focus prochain textview automatiquement
- 29. KeyCode_Entrez au prochain edittext
- 30. JQuery Parent() Prochain numéro
Le [Ajout de composants à une date] (http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html#//apple_ref/doc/uid/TP40007836- SW3) dans le Guide de programmation de la date et de l'heure sera utile. Le listing 2 contient du code pour trouver le dimanche de la semaine en cours. Modifiez cela pour trouver le vendredi suivant à la place. – DyingCactus