我更新鲜,我不知道如何解决以下问题。
我有约会,如果该日期是一周,我想让用户下一步。意味着我想要7天验证。如果日期是在8天之后,则不允许用户下一个。感谢有人解决此问题。
答案 0 :(得分:4)
此功能检查给定日期是否在当前周。
- (BOOL)isDateInThisWeek:(NSDate *)date
{
NSDate *today = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *comps = [calendar components:NSCalendarUnitWeekday fromDate:[NSDate date]];
int weekday = [comps weekday];
int validDays = 7-weekday;
comps = [calendar components:NSCalendarUnitDay fromDate:today toDate:date options:0];
int days = [comps day];
BOOL inThisWeek = days <= validDays;
return inThisWeek;
}
首先计算今天的工作日和本周的剩余天数,然后检查今天和给定日期之间的天数是&lt; =剩余天数。
答案 1 :(得分:1)
将最长日期设定为从今天起7天后的日期。
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.day = 7;
NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0];
dpDob.maximumDate = sevenDays ;
如果您想添加验证,则可以添加此
NSDate* dateTodate = [NSDate date];;
NSTimeInterval distanceBetweenDates = [dateTodate timeIntervalSinceDate:sevenDays];
double secondsInAnHour = 3600;
NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;
if(hoursBetweenDates>168)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:GENERAL_Title message:
@"Select a date within 7 days from today" delegate:nil cancelButtonTitle:
@"OK" otherButtonTitles:nil, nil];
[alert show];
}
答案 2 :(得分:1)
请参阅- (BOOL) isThisWeek
方法
https://github.com/erica/NSDate-Extensions/blob/master/NSDate%2BUtilities.m