2010-10-06 32 views

回答

7

是的,this article教你如何獲得本週的星期日。

我很快就適應了它在20:00拿到週五(假設一個公曆)

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 add to the current date. 
The weekday value for Friday in the Gregorian calendar is 6, so add the difference between 6 and today to get the number of days to add. 
Actually, on Saturday that will give you -1, so you want to subtract from 13 then take modulo 7 
*/ 
NSDateComponents *componentsToAdd = [[NSDateComponents alloc] init]; 
[componentsToAdd setDay: (13 - [weekdayComponents weekday]) % 7]; 

NSDate *friday = [gregorian dateByAddingComponents:componentsToAdd toDate:today options:0]; 

/* 
friday 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: friday]; 

// And to set the time to 20:00 
[components setHour:22]; 

friday = [gregorian dateFromComponents:components]; 
相關問題