2014-08-28 1 views
1

У меня есть следующий метод, который помогает мне определить, является ли текущий день 3 дней или менее с конца месяца:Пытаясь определить, если текущий день месяца в начале месяца в прошивкой

- (BOOL) checkMonthEnd { 

    NSDate *now = [NSDate date]; 
    NSCalendar *cal = [NSCalendar currentCalendar]; 
    NSDate *startOfToday; 
    [cal rangeOfUnit:NSCalendarUnitDay startDate:&startOfToday interval:NULL forDate:now]; 

    NSDate *startOfNextMonth = ({ 
     NSDate *startOfThisMonth; 
     NSTimeInterval lengthOfThisMonth; 
     [cal rangeOfUnit:NSCalendarUnitMonth startDate:&startOfThisMonth interval:&lengthOfThisMonth forDate:now]; 
     [startOfThisMonth dateByAddingTimeInterval:lengthOfThisMonth]; 
    }); 

    NSDateComponents *comp = [cal components:NSCalendarUnitDay fromDate:startOfToday toDate:startOfNextMonth options:0]; 
    if (comp.day < 4) { 
     return YES; 
    } else { 
     return NO; 
    } 
} 

Что я хотел бы сделать, это изменить его так, чтобы он показывал мне, если текущая дата находится в течение первых трех дней НАЧАЛА текущего месяца. Может ли кто-нибудь показать мне, как это сделать?

Заранее благодарим всех, кто отвечает.

+0

Календарный месяц или первые три рабочих дня месяца? Первый - просто посмотрите на компонент дня дня - если он <4, то он находится в течение первых трех дней – Paulw11

ответ

4

Чтобы определить, является ли это одной из первых трех дней месяца, просто получить NSCalendarUnitDay и посмотреть, если это меньше, чем 4:

- (BOOL) checkMonthStart { 
    NSDate *now = [NSDate date]; 
    NSCalendar *cal = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [cal components:NSCalendarUnitDay fromDate:now]; 
    return components.day < 4; 
} 

Кстати, если проверка ли вы в три дня окончания месяца, я мог бы предложить:

- (BOOL) checkMonthEnd { 
    NSDate *now = [NSDate date]; 
    NSCalendar *cal = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [cal components:NSCalendarUnitDay fromDate:now]; 

    NSRange range = [cal rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:now]; 

    return (range.length - components.day) < 3; 
}