在我的应用程序中,我正在使用以下代码来检索当前日期和日期:
NSDate *today1 = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/yyyy :EEEE"];
NSString *dateString11 = [dateFormat stringFromDate:today1];
NSLog(@"date: %@", dateString11);
//[dateFormat release];
NSCalendar *gregorian11 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components1 = [gregorian11 components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today1];
[components1 setDay:([components1 day]-([components1 weekday]-1))];
NSDate *beginningOfWeek1 = [gregorian11 dateFromComponents:components1];
NSDateFormatter *dateFormat_first = [[NSDateFormatter alloc] init];
[dateFormat_first setDateFormat:@"dd/MM/yyyy :EEEE"];
NSString *dateString_first = [dateFormat_first stringFromDate:beginningOfWeek1];
NSLog(@"First_date: %@", dateString_first);
但是使用上面的代码,我只得到了当前日期和日期以及一周的第一天,但是我需要得到一周的最后一天。
我在代码中哪里写错了,并且需要进行哪些修改才能获取上一天的日期/星期几?
最佳答案
如果您有NSDate,则可以使用当前的NSCalendar检索该日期的NSDateComponents。将NSDateComponents的工作日设置为1(一周的第一天),创建一个副本,然后将副本的工作日设置为7(一周的最后一天)。然后使用NSCalendar将两个NSDateComponents都转换回各自的NSDate对象,然后您可以使用NSDateFormatter创建您的字符串表示形式。
此链接包含有关如何获取日期的工作日的示例:
http://stackoverflow.com/questions/1057349#1057405
vikingosegundo建议的另一种获取开始日期和结束日期的方法rangeOfUnit:startDate:interval:forDate:
。它为您提供一定时间单位的开始时间和间隔时间。有了它,很容易在使用的日历中找到一周的开始,并添加范围1以获取该周的最新秒数。
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
NSDate *startOfTheWeek;
NSDate *endOfWeek;
NSTimeInterval interval;
[cal rangeOfUnit:NSWeekCalendarUnit
startDate:&startOfTheWeek
interval:&interval
forDate:now];
//startOfWeek holds now the first day of the week, according to locale (monday vs. sunday)
endOfWeek = [startOfTheWeek dateByAddingTimeInterval:interval-1];
// holds 23:59:59 of last day in week.
关于iphone - 如何在iPhone中查找本周的最后一天?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2719235/