Преобразовать целое число в формат времени, чтобы вы могли рассчитать разницу во времени с ним

0

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

Когда пользователь входит и выходит из своего перерыва, он перестраивается в другой таблице следующим образом:

    $timestamp = date("Y-m-d H:i:s");
    $sql = "INSERT INTO user_log (username, in_pause, action_time)
    VALUES ('$username', 1, '$timestamp')";

Где я пишу 1, когда он входит, и 0, когда он выйдет.
Я подсчитываю, как долго пользователь прерывается от этих двух отмеченных временных меток (так как после моего запроса sql я помещал отметки времени в $ zeiten []):

    $pause_start = new DateTime($zeiten[1]);
    $pause_ende = new DateTime($zeiten[0]);
    $pause_diff = $pause_start->diff($pause_ende);

Пока это прекрасно. Но я не могу найти способ манипулировать целым числом (здесь 60) из моей таблицы пользователя, чтобы я мог вычесть из него мой $ pause_diff. Я хочу иметь возможность рассчитать время перерыва, которое осталось у пользователя.
Спасибо!

Теги:

1 ответ

0
Лучший ответ

Попробуйте этот код:

<?php

$max_minutes = (int) 60;
$zeiten[1] = '2000-01-01 10:00:00';
$zeiten[0] = '2000-01-01 10:10:00';

$pause_start = new DateTime($zeiten[1]);
$pause_ende = new DateTime($zeiten[0]);
$pause_diff = $pause_start->diff($pause_ende);
//$pause_diff->format('Y-m-d H:i:s');
$pause_diff_minutes =  $pause_diff->format('%i');

//var_dump((int) $pause_diff_minutes);

echo 'the differnece is: ' . ($max_minutes - (int) $pause_diff_minutes) . ' minutes';

Результат:

the differnece is: 50 minutes

Вы можете играть с кодом здесь

Обновленный код, показывающий, как вы могли бы вычесть также секунды из 60 минут:

<?php

$max_minutes = (int) 60;
$max_minutes_seconds = $max_minutes * 60; // max_minutes to seconds

$zeiten[1] = '2000-01-01 10:00:00';
$zeiten[0] = '2000-01-01 10:10:05';

$pause_start = new DateTime($zeiten[1]);
$pause_ende = new DateTime($zeiten[0]);
$pause_diff = $pause_start->diff($pause_ende);

$pause_diff_minutes =  $pause_diff->format('%i');
$pause_diff_seconds =  $pause_diff->format('%s');

// sum total diff in seconds
$total_pause_seconds = ((int) $pause_diff_minutes * 60) + $pause_diff_seconds;

$total_diff_seconds = ($max_minutes_seconds - $total_pause_seconds);

echo 'the differnece is: ' . $total_diff_seconds . ' seconds' . "\n";
echo 'which is: ' . floor($total_diff_seconds / 60) . ' minutes and ' . $total_diff_seconds % 60 .  ' seconds';

Результат:

the differnece is: 2995 seconds
which is: 49 minutes and 55 seconds

играйте здесь

  • 0
    Спасибо, что нашли время. Я не хочу форматировать мой $pause_diff , но хочу манипулировать моим числом / целым числом 60, чтобы я мог вычесть мой $pause_diff из этого целого числа.
  • 0
    @nenfos обновил ответ, не уверен, что вы пытаетесь это сделать, но надеюсь, что это поможет.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню