Domanda

Questo è un po 'strano, ma è possibile utilizzare un NSCalendar (o di qualsiasi componente, è per questo) per capire che cosa la data della prossima "primo martedì del mese" sarebbe?

Per esempio, oggi è Giovedi 25 marzo 2010. La prossima "primo martedì del mese" sarebbe il 6 aprile Allo stesso modo, se io stavamo cercando per il prossimo "primo martedì del mese" il 1 ° aprile, si sarebbe ancora il 6 aprile.

Come si dovrebbe fare questo?

Grazie mille !!!!!

È stato utile?

Soluzione

Il codice di seguito calcola il primo Martedì di un dato mese combinazione / anno. E 'scritto in MacRuby perché questo è quello che ho appena provato con, ma si dovrebbe avere problemi per convertirlo corretta Objective-C, è solo una sintassi diversa (io amo MacRuby per provare rapidamente un'idea):

dc = NSDateComponents.alloc.init
# Set month to April 2010
dc.setYear 2010
dc.setMonth 4

dc.setWeekday 3 # 1 = Sunday, 2 = Monday, ...
dc.setWeekdayOrdinal 1 # We want the first weekday of the month

cal = NSCalendar.alloc.initWithCalendarIdentifier NSGregorianCalendar
date = cal.dateFromComponents dc
date.description # => "2010-04-06 00:00:00 +0200"

Lascio a voi per determinare il "prossimo primo Martedì" da una certa data: fare il calcolo per il mese della data corrente prima e se il risultato è nel passato, farlo di nuovo per il mese successivo. Utilizzare -[NSCalendar components:fromDate:] per ottenere il mese / giorno combo di un determinato NSDate.

Altri suggerimenti

Purtroppo non posso verificare l'incapacità di questo codice, ma un po 'dovrebbe apparire così:

NSDateComponents *components = [[NSDateComponents alloc] init];
[components setWeekday:2]; // Monday
[components setMonth:5]; // May
[components setYear:2008];
[components setWeekdayOrdinal:1]
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:components];

Per i campioni e le informazioni dettaglio vedono questo guida

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top