Получите разные дни между двумя датами (исключая выходные) - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь получить количество дней между двумя датами из базы данных.Date_from и Date_to.И я получаю ошибку.Любая помощь будет оценена.Код:

<?php
    require('config/conn.php');

    // Select all from table 'reguests'
    $query = 'SELECT * FROM requests';

    //Results from table
    $result = mysqli_query($conn, $query);

    //Fetch data
    $requests = mysqli_fetch_all($result, MYSQLI_ASSOC);

    //Free result from fetch
    mysqli_free_result($result);

    //Get Days Count Between Dates From And To
    $dateFrom = $request['date_from'];
    $dateTo = $requests['date_to'];

    $daysDiff = floor(abs(strtotime($dateTo) - strtotime($dateFrom)) / (60*60*24));


    //Close conn
    mysqli_close($conn);
    ?>

Выход:

<td><?php echo $daysDiff ?>

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Пожалуйста, проверьте ваш заголовок, он неоднозначен с вашей проблемой.Но, чтобы проверить разницу между датами, пожалуйста, проверьте руководство Php по ссылке: http://php.net/manual/en/datetime.diff.php

Если вы действительно хотите проверить, выходной ли день, пожалуйста, проверьте: Проверка, является ли дата выходным PHP

0 голосов
/ 03 марта 2019

Заголовок вашего вопроса говорит об исключении выходных, но ваш код, похоже, не пытается это сделать?

Чтобы учесть более сложную логику, подобную этой, вероятно, разумно рассчитать период и использовать его для итерации по дням.

Примерно так:

$dateFrom = new DateTime();
$dateTo   = new DateTime( '+1 month +1 second' ); // Add 1s so period includes last day.

$period   = new DatePeriod( $dateFrom, new DateInterval( 'P1D' ), $dateTo );
$days     = 0;

foreach ( $period as $date ) {

    $day = $date->format( 'l' );

    if ( 'Saturday' !== $day && 'Sunday' !== $day ) {
        $days ++;
    }
}

echo $days; // 23
...