Как найти разницу между двумя датами, полученными в ответе от PHP? Я храню даты ответов в двух javascript переменных - PullRequest
0 голосов
/ 07 марта 2020
function chatbox($to_user_id,to_name,from_name,$from_user_id,$user_last_activity) 
{
    var to_user_id = $to_user_id;
    var from_user_id = $from_user_id;
    var status = "";
    var last_seen = $user_last_activity;
    var current_time = "<?php
                          echo $current_timestamp = date("Y-m-d H:i:s");
                        ?>"; 
}

Я извлекаю $ user_last_activity из базы данных, используя php, и передаю его в функциональный чат javascript. И я получаю текущее время из php функции даты. Как сравнить эти две javascript переменные, чтобы получить разницу во времени в se c, мин и час.

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Как только вы исправите проблему с кавычками, здесь возникнет еще одна проблема:

$current_timestamp = date("Y-m-d H:i:s")

, которая произведет метку времени в формате (с использованием маркеров момента. js) ГГГГ-ММ-ДД ЧЧ: мм : ss (например, 2020-03-08 16:38:21), который не поддерживается ECMA-262. Вы не показываете, как метка времени преобразуется в Date, но я предполагаю, что вы используете встроенный синтаксический анализатор, например:

var d = new Date(current_time);

Однако, поскольку разбор неподдерживаемых форматов зависит от реализации, некоторые браузеры возвращают недопустимую дату.

Кроме того, код PHP создает «локальную» дату для сервера, предположительно установленную в UT C. Если браузер выполняет синтаксический анализ даты в формате ГГГГ-ММ-ДД ЧЧ: мм: сс, он почти наверняка будет локальным по отношению к хост-системе браузера, поэтому будет представлять другой момент времени по сравнению с начальной отметкой времени, если две системы имеют разные настройки.

ОП не говорит, что формат $ user_last_activity . Предположительно это другая временная метка, поэтому у нее будут те же проблемы с синтаксическим анализом.

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

1 голос
/ 07 марта 2020

Пожалуйста, используйте php как

<script>
var date= "<?php echo $current_timestamp = date('Y-m-d H:i:s'); ?>";
</script>

Помните, что вы не можете использовать " in ' ' строку и ' in " " строку, потому что она будет учитывать конечную точку строки.

...