如何从本周的工作日名称获取具体日期

时间:2014-06-20 07:07:33

标签: ios objective-c xcode nsdate

我们怎样才能获得当天特定日期的日期名称(星期一和星期日之间)?例如我想知道这个星期天的日期是什么,或者是星期一上午的日期。

编辑:这是我如何在@juniperi的链接

的帮助下解决问题的
//To get current day
CFAbsoluteTime at = CFAbsoluteTimeGetCurrent();
CFTimeZoneRef tz = CFTimeZoneCopySystem();
SInt32 currentWeekdayNumber = CFAbsoluteTimeGetDayOfWeek(at, tz);

//We are adding or substracting from the day we want and add to the current date
NSDate *now = [NSDate date];
int daysToAdd = theDayNumberWeWant - currentWeekdayNumber;
NSDate *newDate1 = [now dateByAddingTimeInterval:60*60*24*daysToAdd];

2 个答案:

答案 0 :(得分:2)

int yourDOW = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit
    fromDate:yourDate] weekday];

这就是你可以获得当天日期的方式,例如:星期一,星期二等等。

根据这一点,您可以计算下一个/上一天和/或日期,两者:

例如:

  

(星期日以1代表。)2014年6月20日是星期五,结果是   6.那就意味着上周一是:date - (currentDay - requiredDay)= 20 - (6(周五) - 2(星期一))= 20 - (4)= 16

     

这意味着,2014年6月16日是最后一个星期一。

希望这会有所帮助。有关详细信息,请参阅NSDateComponents.

答案 1 :(得分:1)

通过您的日期此方法将返回此日期存在的第一天的日期。如果您通过当前日期,您将获得当周第一天的日期。像这样你可以计算其他日子的日期。

+ (NSDate *) getFirstDayOfTheWeekFromDate:(NSDate*)givenDate
{
NSCalendar *calendar = [NSCalendar currentCalendar];

NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:givenDate];
[components setWeekday:1];
[components setWeek:[components week]];

return [calendar dateFromComponents:components];
}