Timeago дает мне неправильное количество времени - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь использовать timeago для отображения того, как давно на моем веб-сайте было выполнено действие.

Я использую ajax-запрос для добавления строк в таблицу, а затем после того, как все строкидобавил, я снова активирую время.У меня есть функция с именем fill_table(), которая собирает некоторые данные строк из сценария php, а затем перебирает данные, добавляя строки в таблицу.

function fill_table() {
    $.ajax({
        ...
        success : function(data) { 
            var table = $('#table_body');
            table.empty();
            $.each(data, function( index, value ) {

                var date = new Date(new Date(value.last_updates).toLocaleString("en-US", {timeZone: "America/Chicago"})).toISOString();

                var elem = '\
                    <tr>\
                        <td><a target="_blank" href="' + value.name + '">' + value.name + '</a></td>\
                        <td>' + value.market_value + '</td>\
                        <td>' + value.lowest_cost + '</td>\
                        <td>' + value.biggest_md_format + '</td>\
                        <td><time class="timeago" datetime="' + date + '"></time></td>\
                    </tr>\
                ';
                table.append(elem);
            });
            $("time.timeago").timeago();                
        },
        error : function(request,error)
        {
            console.log("Request: "+JSON.stringify(request));
        }
    });
}

Теперь по какой-то причине это говорит мне «6 часов»назад "для отметок времени, которые должны быть не более 8-12 минут.

Как вы можете видеть в коде, я объявил date, используя некоторую сумасшедшую вещь toLocaleString, просто чтобы убедиться, что это былаПравильный часовой пояс, я также уже установил PHP-заголовок в моем контроллере

date_default_timezone_set('America/Chicago');

Проверка элемента timeago дает мне

<time class="timeago" datetime="2019-03-03T12:56:28.000Z">about 6 hours ago</time>

Что дата и время верны, 12:56 AM CST (Америка / Чкаго), но это всего лишь около 10 минут назад.

Так что я в растерянности, я безуспешно пытался исправить проблемы с часовыми поясами и не знаю, что еще делать.

Как я могу заставить время читать правильное количество времени?

1 Ответ

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

Эта дата и время не правильно.Это Z в конце обозначает его как часовой пояс UTC, а не ваш местный часовой пояс.Таким образом, timeago правильно дает вам разницу в несколько часов с этим временем в UTC.

Проверьте ваши входы и эту логику преобразования в JS.

...