How do you calculate the day of the year for a specific date in Objective-C?

Godisemo picture Godisemo · Jan 17, 2010 · Viewed 11.7k times · Source

This is something I found myself spending hours to figure out and therefore want to share with you.

The question was: How do I determine the day of the year for a specific date?

e.g. January 15 is the 15th day and December 31 is the 365th day when it's not leap year.

Answer

John Feminella picture John Feminella · Jan 17, 2010

Try this:

NSCalendar *gregorian =
   [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger dayOfYear =
   [gregorian ordinalityOfUnit:NSDayCalendarUnit
     inUnit:NSYearCalendarUnit forDate:[NSDate date]];
[gregorian release];
return dayOfYear;

where date is the date you want to determine the day of the year for. The documentation on the NSCalendar.ordinalityOfUnit method is here.