0

我正在尝试创建一个我知道何时创建帖子的东西,然后在我的数据库中插入一个未来 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 小时)?

处于不同时区也会影响倒计时中显示的这个数字吗?

4

2 回答 2

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);
于 2013-03-04T05:11:31.140 回答
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 的更多信息,请单击此处

于 2013-03-04T05:12:34.317 回答