How to detect weekends with php?

0

I am trying to find out about a range of dates if it contains days that are Saturday or Sunday, the code I am using is the following:

    $fecha_i = '02/03/2017';
    $fecha_f = '10/03/2017';

    $begin = new DateTime($fecha_i);
    $end = new DateTime($fecha_f);
    $end = $end->modify( '+1 day' );
    $interval = new DateInterval('P1D');
    $daterange = new DatePeriod($begin, $interval ,$end);

    foreach($daterange as $date){

    print date('l', strtotime($date));
    if(date('l', strtotime($date)) == 'Sunday' || date('l', strtotime($date)) == 'Saturday'){
        print 'Fin de Semana: '.$date->format("d-m-Y")."<br>";
    } else {
        print 'Semana: '.$date->format("d-m-Y")."<br>"; 
    }
}

Result obtained, I do not know why it repeats them:

WednesdaySemana: 03-02-2017 WednesdaySemana: 03-03-2017 WednesdaySemana: 03-04-2017 WednesdaySemana: 03-05-2017 WednesdaySemana: 03-06-2017 WednesdaySemana: 03-07-2017 WednesdaySemana: 03-08-2017 WednesdaySemana: 03-09-2017 WednesdaySemana: 03-10-2017

    
asked by Fernando Amezcua 27.03.2017 в 21:03
source

1 answer

0
    $fecha_i = '02/03/2017';
    $fecha_f = '10/03/2017';

    $begin = new DateTime($fecha_i);
    $end = new DateTime($fecha_f);
    $end = $end->modify( '+1 day' );
    $interval = new DateInterval('P1D');
    $daterange = new DatePeriod($begin, $interval ,$end);

    foreach($daterange as $date){

    if(date('l', strtotime($date->format("d-m-Y"))) == 'Sunday' || date('l', strtotime($date->format("d-m-Y"))) == 'Saturday'){
        print 'Fin de Semana: '.$date->format("d-m-Y")."<br>";
    } else {
        print 'Semana: '.$date->format("d-m-Y")."<br>"; 
    }
}

// Result

Week: 02-03-2017 Week: 03-03-2017 Weekend: 03-04-2017 Weekend: 03-05-2017 Week: 06-03-2017 Week: 07-03-2017 Week: 08-03-2017 Week: 09-03-2017 Week: 03-10-2017

    
answered by 27.03.2017 / 21:28
source