如果今天是该月的最后一天,如何在ios中显示当前日期的7天

时间:2016-06-30 09:02:06

标签: ios objective-c xcode uidatepicker nsdatecomponents

我在datepickerview显示了一个月中的七天。

但我的问题是,如果今天的当前日期是该月的最后一天,如何显示当前日期的七天。

示例:假设今天是六月,六月有30天,所以今天的日期是30。那么我的问题是如何显示当前日期的下一个6天,意味着在datepicker我希望30th June,1july,2july,3july, 4july,5july,6july。

请建议我如何解决这个问题。我还提供了代码,请告诉我我的代码出错了。

NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *comps = [NSDateComponents new];
    comps.day = 7;

    NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0];
    ActionSheetDatePicker *datePicker = [[ActionSheetDatePicker alloc] initWithTitle:@"Select Date" datePickerMode:UIDatePickerModeDate selectedDate:[NSDate date] minimumDate:[NSDate date] maximumDate:sevenDays target:self action:@selector(timeWasSelected:element:) origin:sender];

5 个答案:

答案 0 :(得分:3)

您可以按照以下代码行计算接下来的七天:

NSDate *sevenDays = [[NSDate date] dateByAddingTimeInterval:60*60*24*7];

然后您可以在下面的代码中使用DatePicker。

ActionSheetDatePicker *datePicker = [[ActionSheetDatePicker alloc] 
    initWithTitle:@"Select Date" datePickerMode:UIDatePickerModeDate 
    selectedDate:[NSDate date] minimumDate:[NSDate date] 
    maximumDate:sevenDays target:self 
    action:@selector(timeWasSelected:element:) origin:sender];

希望这会对你有所帮助。

如果您对此有任何疑问,请添加评论。

快乐编码!!!

答案 1 :(得分:2)

代码似乎是正确的,也许问题是您正在使用的第三方选择器?尝试使用 UIDatePicker 进行编码,看看是否得到了您正在寻找的结果,如果是这样,则意味着 ActionSheetDatePicker 存在一些问题....

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.day = 7;

NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:  [NSDate date] options:0];

下面的代码用UIDatePicker看起来像这样.... _ datePicker是iboutlet UIDatePicker

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.day = 7;

NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0];
[_datePicker setMinimumDate:[NSDate date]];
[_datePicker setMaximumDate:sevenDays];

在带有上述代码的UIDatePicker中,如果用户滚动到上一个日期选择器将自动设置今天的日期,如果用户滚动到第10个选择器将自动设置为7月7日 current date...

答案 2 :(得分:0)

NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
dayComponent.day = 1;

NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSDate *nextDate = [theCalendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0];

NSLog(@"nextDate: %@ ...", nextDate);

从这个你可以计算第二天的意思是,如果今天是30,那么第二天是1,所以你可以使用for循环并运行它七次,而不是你接下来的七天

答案 3 :(得分:0)

这将创建一个包含接下来7天的数组nextSevenDays,包括今天。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *startDate = [calendar startOfDayForDate:[NSDate date]];
NSMutableArray<NSDate*> * nextSevenDays = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < 7; i++) {
  [nextSevenDays addObject:[calendar dateByAddingUnit:NSCalendarUnitDay value: i toDate: startDate options: NSCalendarMatchNextTime]];
}
NSLog(@"%@", nextSevenDays);

要从现在起7天后使用

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *startDate = [calendar startOfDayForDate:[NSDate date]];
NSDate *sevenDaysFromNow = [calendar dateByAddingUnit:NSCalendarUnitDay value: 7 toDate: startDate options: NSCalendarMatchNextTime];
NSLog(@"%@", sevenDaysFromNow);

答案 4 :(得分:0)

for (int i = 0; i < 7; i ++)
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *comps = [NSDateComponents new];
    comps.day =i;
    NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:objDate.date options:0];
    [dateFormatter setDateFormat:@"dd/MM/yy"];

    NSString *str = [dateFormatter stringFromDate:sevenDays];
    NSLog(@"str : %@",str);
}

希望此代码能为您提供帮助:)