Timeago 给了我错误的时间

Timeago giving me wrong amount of time

我正在尝试使用 timeago 来显示在我的网站上完成某项操作的时间。

我正在使用 ajax 请求将行添加到 table,然后在添加所有行后,我将再次激活 timeago。我有一个名为 fill_table() 的函数,它从 php 脚本中收集一些行数据,然后循环将数据添加到 table.

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 header 在我的控制器中

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 (America/Chcago),但那只是大约 10 分钟前。

所以我很茫然,我尝试修复时区问题但没有成功,不知道还能做什么。

如何让 timeago 读取正确的时间?

那个日期时间正确。最后的 Z 将其指定为 UTC 时区,而不是您当地的时区。所以 timeago 正确地给出了与 UTC 时间相差多个小时的时间。

检查您的输入和 JS 中的转换逻辑。