2014-11-26 2 views
-4

Я свежее, и я не знаю, как решить ниже проблему.Дата проверки на неделю

У меня есть дата, и я хочу разрешить пользователю идти дальше, если эта дата в неделю. Значит, я хочу 7 дней проверки. Если дата истекает через 8 дней, тогда не разрешайте пользователю идти дальше. Спасибо, если кто-нибудь решит эту проблему.

+0

Итак, вы хотите знать, как сделать арифметику с датами? Вы исследовали это вообще? NSCalendar? NSDateComponents? –

+0

Если я правильно понял, вы хотите проверить, находится ли выбранная дата на текущей неделе или нет? – arturdev

+0

@arturdev Нет. Я хочу проверить - с текущей даты до моей даты (которая является следующей датой с текущей даты) на расстоянии 7 дней. – chaaruu

ответ

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

} 
+0

'double secondsInAnHour = 3600;' не всегда * ** TRUE **. Извините, но я не мог перестать комментировать, это поможет вам узнать –

+0

Почему это не всегда так? Скажите мне причину –

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

Сначала вычислить день недели сегодня и оставшиеся дни на этой неделе, а затем проверить количество дней между сегодня и указанной датой является < = оставшиеся дни.

+0

@ jberlanaL: Привет, Мое приложение рушится из-за разного формата dateTime. Я попытался изменить формат моей даты, но он не меняется, а приложение рушится. Есть ли для этого другое решение. today = 2014-11-27 07:22:14 +0000 Дата = 2014-11-29T20: 30: 00 + 00: 00 – chaaruu

Смежные вопросы