Strtotime / 86400 не работает (php) - PullRequest
0 голосов
/ 03 июня 2018

Я попытался создать php-скрипт, который берет дату из daterangepicker, создает две переменные, которые затем конвертируются в strtotime.

Затем я делю разницу на 86400, чтобы вернуть количество дней, но вместо того, чтобы вернуть один (когда я выбираю один день), он возвращает 31. У вас есть какое-либо представление о том, где я допустил ошибку?

Пример, когда $_POST['periode']=03/06/2018 00:00 - 04/06/2018 00:00

        $datete=$_POST['periode'];
        list($debut, $fin) = explode(" - ", "$datete", 2);
        $debutTS=strtotime($debut);
        $finTS=strtotime($fin);
        $diff=($finTS-$debutTS)/86400

$debutTS возвращает 1520294400 и $finTS возвращает 1522972800. $debutTS должен возвращать 1527976800 $finTs должен возвращать 1528063200

Любая идея?

1 Ответ

0 голосов
/ 03 июня 2018

Вы можете использовать PHP DateTime -класс для этого.Он также может рассчитать разницу для вас, поэтому нет причин делать это вручную.

$dates = explode(' - ' , $_POST['periode']);

// Create the first date from your date/time format
$from = DateTime::createFromFormat('d/m/Y H:i', $dates[0]);

// Create the second date from your date/time format
$to = DateTime::createFromFormat('d/m/Y H:i', $dates[1]);

// Get the difference
$interval = $from->diff($to);

// Get the difference in days (it's the %a token)
// No need to calculate anything manually
$diff = $interval->format('%a');

echo $diff;

Демо: https://3v4l.org/HVukA

...