我需要帮助在php中创建倒计时器。 问题是我想在我的数据库中存储一个INT,这将是几秒钟, 并且这个int将被添加到当前时间以表示未来时间。
现在,如果我尝试从未来时间减去当前时间以显示剩余的秒数,那么我的日期就会错误。
这是我的架构
mysql> desc buildings; +-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | YES | | NULL | | | level | int(2) | YES | | NULL | | | created | int(11) | NO | | NULL | | | finished | int(11) | YES | | NULL | | | player_id | int(11) | YES | MUL | NULL | | | position | int(2) | YES | | NULL | | +-----------+-------------+------+-----+---------+----------------+
并且是要检查的代码
//starting session; //connecting to database; $query = "select created, finished from buildings where id = 1"; $query = mysql_query($query) or die ("could not query
".mysql_error() ); while($row = mysql_fetch_assoc($query)) { $created = $row['created']; $finished = $row['finished']; } $CurrentTime = time(); $status = $finished - $CurrentTime; $realstatus = date("H:i:s",$status); if($status > 0) { echo "under construction, still ".$realstatus." to finsih"; }else { die("construction complete"); } //echo $created."
".$finished; ?>
任何帮助将不胜感激。
答案 0 :(得分:3)
如果没有看到您的代码,就无法提供很多答案,但也许这会提供一些见解:
<?php
$fmt = 'Y-m-d H:i.s'; // date formatting
$now = time(); // current time
$offset = 600; // future offset
$future = strtotime('+' . $offset . ' seconds'); // future time using relative time
$timeleft = $future - $now; // time left in seconds
// echo results
echo 'Current Time: ' . date($fmt, $now) . PHP_EOL;
echo 'Event Time: ' . date($fmt, $future) . PHP_EOL;
echo 'Time Until Event: ' . $timeleft . ' seconds' . PHP_EOL;
?>
<强>输出:强>
Current Time: 2011-05-03 12:00.15
Event Time: 2011-05-03 12:10.15
Time Until Event: 600 seconds
答案 1 :(得分:2)
您的问题是您正在减去两个时间戳并将结果格式化为日期。结果不是日期,而是两个日期之间的间隔。
如果您想知道剩余多少小时/分钟/秒,您只需将结果$status
除以3600/60/1(除以小时数,然后将余数除以分钟数等。 )。