Josh Kahane
Josh Kahane

Reputation: 17169

NSDate - Getting Days of the Month (Not Days of the year)?

Using NSDateComponents I know how to get the day component, but this gives me a value from 1 - 365, right? I need to get the days 1-30 of a specific month, how can I?

For example, I have an NSDate which might be 16th May. I want to be able to get the day, so it returns 16. Being the 16th day of that month (not the 16th day of the year).

Thanks.

EDIT:

I have this:

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [cal components:NSDayCalendarUnit fromDate:[[NSUserDefaults standardUserDefaults] objectForKey:@"dateSaved"]];

However comps.day returns 1 when it should equal what the date is saved as, say 4.

Upvotes: 1

Views: 320

Answers (1)

Dennis Bliefernicht
Dennis Bliefernicht

Reputation: 5157

The day value of NSDateComponents gives you the day of month according to the given calendar:

NSDate *date = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [gregorian components:NSDayCalendarUnit fromDate:date];
NSLog(@"%@ / %d", date, comps.day);

gives

2012-02-04 15:27:36.682 testapp[1533:f803] 2012-02-04 14:27:36 +0000 / 4

although February, 4th would be the 35th day of the year.

Upvotes: 1

Related Questions