我正在使用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>
答案 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/
您可以检查数据库时间戳以及您可以在客户端服务器上获取的数据。比较它,你可以找到错误的时区。