我在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];
答案 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日
答案 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);
}
希望此代码能为您提供帮助:)