NSDateComponents - 设置工作日组件

时间:2014-10-21 04:39:06

标签: objective-c xcode date time nsdate

我正在尝试检查当前时间之间是否有2个日期和时间。我已经完成了这个功能。这是函数

-(BOOL)getStartHour:(NSInteger)startHour getStartMin:(NSInteger)startMin getEndHour:

(NSInteger)endHour getEndMin:(NSInteger)endMin {
    NSDate *now = [NSDate date];
    NSDate *startOfToday;
    [[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&startOfToday interval:NULL forDate:now];


    NSDateComponents *startComps = [[NSDateComponents alloc] init];
    startComps.weekday = 1;
    startComps.hour = startHour;
    startComps.minute = startMin;
//
    NSDateComponents *endComps = [[NSDateComponents alloc] init];
    endComps.hour = endHour;
    endComps.minute = endMin;
    endComps.weekday = 3;

    NSDate *startDate =  [[NSCalendar currentCalendar] dateByAddingComponents:startComps toDate:startOfToday options:0];
    NSDate *endDate =  [[NSCalendar currentCalendar] dateByAddingComponents:endComps toDate:startOfToday options:0];
    NSLog(@"%d", [startComps weekday]);
//    NSLog(@"%@", startDate);
//    NSLog(@"%@", now);

    if ([startDate timeIntervalSince1970] < [now timeIntervalSince1970] && [now timeIntervalSince1970]  < [endDate timeIntervalSince1970]) {
        return YES;
    }
    else return NO;
}

当我记录[startComps weekday]时,它会记录,但是今天是星期二,这对我没有意义。我想检查这个日期是否在星期一和星期三之间,我猜是1 - 3或0 - 2.但为什么今天(星期二)记录为0?

换句话说,我正在寻找dayOfWeek作为整数。星期一 - 1,星期二2等等

提前帮助他们。

3 个答案:

答案 0 :(得分:0)

想一想:你不能将“星期二”添加到“现在”的日期。那是什么意思?下个星期二?上个星期二?或者,如果现在星期二是星期四,那么星期四是星期二是第二天的星期四,或星期五是第三天?

所以它记录0,因为在这种情况下实际上0代表什么都没有。 1是星期日,2星期一... 6星期六。

答案 1 :(得分:0)

if ([startDate timeIntervalSince1970] < [now timeIntervalSince1970] && [now timeIntervalSince1970]  < [endDate timeIntervalSince1970]) {
        return YES;
    }
    else return NO;

然后每天返回,

所以添加if语句

if weekday < day and day < weekend 
return yes

答案 2 :(得分:-1)

+(BOOL)isDate:(NSDate*)date betweenStartDate:(NSDate*)startDate andEndDate:(NSDate*)endDate {     
    if (( ([startDate compare:date] == NSOrderedAscending || [startDate compare:date] == NSOrderedSame) ) && ([endDate compare:date] == NSOrderedDescending || [endDate compare:date] == NSOrderedSame)) { 
        return YES;     
    }     
    return NO; 
}