Обсчитать данные времени, php

72
22 января 2021, 04:10

Всем доброго времени суток. Возник вопрос, как мне от текущего времени отнять время из бд? У меня есть табличка с типом Time, там пока около 20 записей, мне нужно обсчитать, через сколько времени будет время, которое записано в этой ячейке?

Например: Автобус отправляется в 12:43:00. Мне нужно узнать через какое время он отправиться(типа отправляется через 3:12:00). Все это дело нужно сделать на php

Answer 1

Тогда через strtotime

$todate = strtotime("now");
//$fromdate = $bus->getStartDateTime()->format('M d, Y H:i:s');
$fromdate = strtotime('03 June 2019 13:00:00 +3 GMT');
$calculate_seconds = $fromdate - $todate;
$days = floor($calculate_seconds / (24 * 60 * 60)); // convert to days
$timeInDays = $days * (24 * 60 * 60);
$hours = floor(($calculate_seconds - $timeInDays) / (60 * 60)); // convert to hours
$timeInHours = $hours * (60 * 60);
$min = floor(($calculate_seconds - $timeInDays - $timeInHours) / 60); // convert to min
echo($days . ' d. ' . $hours . ' h. ' . $min . ' m.');
Answer 2

Можно сделать через js. Просто передаешь полученное из БД значение в любой в нужный элемент и на выходи получишь результат с пересчетом в 1 сек. Грубо говоря таймер

<div id="countdown-timer"
 data-time="<?php echo $bus->getStartDateTime()->format('M d, Y H:i:s'); ?>" >
var countdownTimer = $("#countdown-timer"),
        countDownDate = new Date(countdownTimer.data('time')).getTime();
    var intervalId = setInterval(function() {
        var now = new Date().getTime();
        var distance = countDownDate - now;
        var days = Math.floor(distance / (1000 * 60 * 60 * 24)),
            hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
            minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),
            seconds = Math.floor((distance % (1000 * 60)) / 1000);
        var remainingTime;
        var formatTime = function (count, label) {
            return "<span>" + count + "</span> <sub>" + _t(label) + ".</sub>"
        }
        if (days > 0) {
            remainingTime = formatTime(days, 'd') + ' ' + formatTime(hours, 'h') + ' ' + formatTime(minutes, 'm');
        } else if (days === 0 && hours !== 0 && minutes !== 0) {
            remainingTime = formatTime(hours, 'h') + ' ' + formatTime(minutes, 'm') + ' ' + formatTime(seconds, 's');
        } else if (days === 0 && hours === 0 && minutes !== 0) {
            remainingTime = formatTime(minutes, 'm') + ' ' + formatTime(seconds, 's');
        } else if (days === 0 && hours === 0 && minutes === 0) {
            remainingTime = formatTime(seconds, 's');
        } else {
            clearInterval(intervalId);
            remainingTime = '<div class=\"countdown-timer\">' + formatTime(0, 'h') + ' ' + formatTime(0, 'm') + '</div>';
        }
        $('#countdown-timer').html(function() {
            $('#countdown-timer span.nbsp').remove();
            return remainingTime;
        });
    }, 1000);

Если времени больше суток - 1 d. 12 h. 15 m. Менее суток - 16 h. 45 m. 15 s.

READ ALSO
Отправить файл с помощью cURL

Отправить файл с помощью cURL

Скопировал код из мануала

110
Инъекции в куки

Инъекции в куки

Пишу свой велосипед, который будет из себя представлять менеджер паролей для входа на сайты (да, знаю, что в браузерах есть куча готовых решений,...

89
Получить файл через &#39;php://input&#39;

Получить файл через 'php://input'

Отправляю файлы (избражение, изображние в архиве) на сервер POST-запросомФайл приходит(данные появляются в $_FILES)

109