How to get first sunday or nth sunday or monday (any day) date in Objective C coding.
For example :- I just want to show date of friendship day in my app every year.
But, friendship comes 1st Sunday of Aug. So, date will change every year. here I need to find what is the date of 1st Sunday in Aug every year.
is there any logic to find the date of nth Sunday.
You need to create a NSDateComponents object and set the appropriate values, In You example you would do:
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
dateComponents.year = 2011; // set the current year or whatever year you want here
dateComponents.month = 8;
dateComponents.weekday = 1; // sunday is 1, monday is 2, ...
dateComponents.weekdayOrdinal = 1; // this means, the first of whatever weekday you specified
To convert this into a NSDate-object, you just do:
//you may want to use another calendar object here
NSDate *myDate = [[NSCalendar currentCalendar] dateFromComponents:dateComponents];
[dateComponents release]; //don't forget memory management ;)
You want to use NSDateComponents
in combination with NSCalendar
's dateFromComponents:
method:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *c = [[NSDateComponents alloc] init];
[c setYear:2012];
[c setWeekday:1]; // Sunday
[c setWeekdayOrdinal:3]; // The 3rd Sunday
for (int i = 1; i <= 12; i++) {
[c setMonth:i];
NSDate *date = [gregorian dateFromComponents:c];
NSLog(@"Date[%i]: %@",i,date);
}
[c release];
[gregorian release];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With