Timeago给我错了时间

时间:2019-03-03 07:04:16

标签: php jquery timeago

我正在尝试使用timeago来显示我的网站在多久之前完成了一项操作。

我正在使用ajax请求向表中添加行,然后在添加所有行之后,再次激活了timeago。我有一个名为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分钟。

您可以在代码中看到,我已经使用一些疯狂的toLocaleString声明了date,只是为了确保它是正确的时区,我也已经在控制器中设置了PHP标头

date_default_timezone_set('America/Chicago');

检查timeago元素可以给我

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

日期时间是正确的,即CST(美国/芝加哥)上午12:56,但这仅是大约10分钟前。

所以我很茫然,我一直试图解决时区问题,但是没有运气,也不知道该怎么办。

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

1 个答案:

答案 0 :(得分:2)

该日期时间是正确的。最后的Z将其指定为UTC时区,而不是您的本地时区。因此,timeago可以使您与UTC的时间相差几个小时。

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