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

How to show 7 days from current date in ios if today is last day of the month

我在 datepickerview 中显示每月的 7 天。

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

示例:假设今天是六月,六月有 30 天,所以今天的日期是 30。那么我的问题是如何显示从当前日期开始的接下来的 6 天,意味着在日期选择器中我想要 6 月 30 日、7 月 1 日、2 月, 7 月 3 日、7 月 4 日、7 月 5 日、7 月 6 日。

请建议我如何解决该问题。我还提供了代码,请告诉我我的代码哪里做错了。

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];
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 循环并且 运行 它是你接下来的七天的七倍

您可以通过以下代码行计算接下来的 7 天:

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];

希望这对您有所帮助。

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

编码愉快!!!

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

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);

代码似乎是正确的,也许问题出在您使用的第三方选择器上?尝试使用 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 日将自动设置为 7 月 7 日

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);
}

希望这段代码对您有所帮助:)