2015-07-05 68 views
0

我正在使用timeago javascript插件来计算从用户创建帖子时开始经过的时间。问题是,当用户创建一个新帖子时,timeago函数启动显示时间从“10小时”而不是“刚才”开始。我认为这是因为我的数据库中的时间存储在用户时区的不同时区中。timeago在javascript中的不同时区中的时间

任何想法如何解决这个问题?

经过一番研究,我发现时间戳的格式必须在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> 
+0

如果没有给我们* timeago *函数的代码,就不可能回答这个问题。 –

+0

始终在您的数据库中以UTC保存日期/时间值。 – marekful

+0

我已添加代码! – user2242558

回答

-2

我喜欢此刻JS :) http://momentjs.com/timezone/

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

0

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);