在javascript中不同时区的timeago时间

时间:2015-07-05 12:38:10

标签: javascript jquery

我正在使用timeago javascript插件来计算用户创建帖子的时间。问题是,当用户创建新帖子时,timeago功能开始显示从< 10小时后经过的时间'而不是现在'。我想这是因为我的数据库中的时间存储在与用户时区不同的时区。

知道如何解决这个问题吗?

经过一番研究后,我发现时间戳的格式必须是ISO 8601,但经过测试后无效!

下面是我展示时间的代码。

<?php
foreach ($postsArray  as $v1) 
                            {
                            ?>      
                            <article>                       
                            <header><h3><?php echo $v1->TITLE; ?></h3>            </header>
                            <p><?php echo $v1->CONTENT; ?></p>
                            <?php
                            $timestamp = $v1->TIME;
                            $formatedDate = date("c",strtotime($timestamp));
                            ?>
                            <footer><b>Author:</b> <?php echo $v1->USERNAME; ?> <b>Published:</b> <time class="timeago" datetime="<? echo $formatedDate; ?>"></time></footer>
                            </article>
                            <?php
                            }
                            ?>    

以下是javascript函数:

<script type="text/javascript">
  $(document).ready(function(){
  $('time.timeago').timeago();
    });
</script>

2 个答案:

答案 0 :(得分:2)

jquery-timeago的作者在这里。

As the docs reference,在timeago中按预期工作所需的ISO 8601时间戳是必需的(时区会自动处理):

<time class="timeago" datetime="2008-07-17T09:24:17Z">July 17, 2008</time>

在PHP中,要获得ISO 8601时间戳,这是一个示例代码段:

$time->format(DateTime::ISO8601);

答案 1 :(得分:-2)

我更喜欢时刻js :) http://momentjs.com/timezone/

您可以检查数据库时间戳以及您可以在客户端服务器上获取的数据。比较它,你可以找到错误的时区。