在我的应用程序中,我正在使用以下代码来检索当前日期和日期:

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/

10-12 22:12