我正在尝试创建一个我知道创建帖子的时间,然后将4个小时的时间插入到我的数据库中...
然后我有另一个页面列出所有帖子,并显示到期日期的倒计时......
我使用当前时间(),然后将其与数据库中帖子的到期时间进行比较,以得出倒计时中剩余的小时数,分钟数和秒数。但是我遇到了麻烦......我在电脑上查看倒计时,然后在朋友的电脑上看到一个完全不同的号码。
服务器时间有什么不同吗?或者什么?
基本上这就是我在数据库中的内容
帖子标题 - > "我的帖子标题" 时间到期 - > 13点50分02秒
然后我有我的display_post.php:
while ($allQuestions = mysql_fetch_array($r)){
$now = new DateTime(date("G:i:s",time()));
$exp = new DateTime($allQuestions['time_expires']);
$diff = $now->diff($exp);
printf('%d hours, %d minutes, %d seconds', $diff->h, $diff->i, $diff->s);
}
我不知道如何做到这一点......我也可能在插入这个代码的新帖子时遇到麻烦:
$time_created = date("h:i:s",time());
$time_expires = date("h:i:s",time()+(4*3600));
$query = "INSERT into questions (time_created, time_expires)VALUES('".$time_created."', '".$time_expires."')";
mysql_query($query) or die(mysql_error());
那么我将如何制作它以便用户可以插入新帖子然后他/她(以及其他不同时区的人)转到该页面以查看剩余时间,直到它过期(创建后4小时) )?
还会在不同的时区中影响倒计时显示的这个数字吗?
答案 0 :(得分:2)
差异是由于在大多数情况下看到的时区。请在设置时区校正后尝试并执行操作:
$timezone = "Asia/Calcutta";
if(function_exists('date_default_timezone_set'))
date_default_timezone_set($timezone);
我正在使用上面的代码。要了解您的时区,请访问http://php.net/manual/en/timezones.php
还发现您的代码中没有添加秒数:
$time_expires = date("h:i:s",time() + 60*60*4);
答案 1 :(得分:2)
您的代码正在向当前时间添加4秒
$time_expires = date("h:i:s",time()+4);
如果你需要增加4个小时,那么你的代码必须是这样的:
$time_expires = date("h:i:s",time()+14400);
另外,你需要设置时区,不要为此获得php警告吗?
date_default_timezone_set("UTC"); // is referring to the GMT timing
所有基于UTC的计算都是如此,一切都应该没问题。
编辑:使用MYSQL使您的PHP代码变得简单。
而不是使用它:
$time_created = date("h:i:s",time());
$time_expires = date("h:i:s",time()+(4*3600));
$query = "INSERT into questions (time_created, time_expires)VALUES('".$time_created."', '".$time_expires."')";
mysql_query($query) or die(mysql_error());
使用此:
$query = "INSERT into questions (time_created, time_expires)
VALUES(CURTIME(),CURRENT_TIMESTAMP + INTERVAL '4' HOUR)"
mysql_query($query) or die(mysql_error());
另一件事是你与数据库的连接
mysql_connect从PHP 5.5.0开始,不推荐使用此扩展 将来要删除。相反,MySQLi或PDO_MySQL扩展 应该使用。另请参阅MySQL:选择API指南和相关的常见问题解答 了解更多信息。
如果您需要了解有关PDO的更多信息,请点击HERE