views:

36

answers:

1

e.g. 01.10.2010 is friday => 27.09.2010 is monday.

I have no idea how to manage this one. btw: how can I calculate with dates?

+3  A: 

For time/date calculations use NSDateComponents.

Listing 2 Getting the Sunday in the current week

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];

/*
Create a date components to represent the number of days to subtract from the current date.
The weekday value for Sunday in the Gregorian calendar is 1, so subtract 1 from the number of days to subtract from the date in question.  (If today's Sunday, subtract 0 days.)
*/
NSDateComponents *componentsToSubtract = [[NSDateComponents alloc] init];
[componentsToSubtract setDay: 0 - ([weekdayComponents weekday] - 1)];

NSDate *beginningOfWeek = [gregorian dateByAddingComponents:componentsToSubtract toDate:today options:0];

/*
Optional step:
beginningOfWeek now has the same hour, minute, and second as the original date (today).
To normalize to midnight, extract the year, month, and day components and create a new date from those components.
*/
NSDateComponents *components =
    [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
               fromDate: beginningOfWeek];
beginningOfWeek = [gregorian dateFromComponents:components];
vikingosegundo
looks very complicated :> . but it is a really good example. thank you
adamseve
coming from python I also was surprised how coplicated it is. But in the end it all makes sense and fits into the objc-world.
vikingosegundo