用PHP的倒计时计时器

时间:2011-02-20 03:32:21

标签: php mysql math time

在PHP中使用时间正在踢我的屁股。

我正在尝试制作一个单击按钮时启动的计时器。我希望制作一些东西,当我点击一个按钮时,输入当前时间和时间+ 5分钟进入数据库,然后以min:sec输出差异。我需要存储时间,以便它们包含日期,这样当网站不使用时,它不会显示一些奇怪的值。

第一页进入时间

$target = date('Y-m-d H:i:s') + date('i', 5);
$starttime = date('Y-m-d H:i:s');

INSERT INTO countdowntimer (target, starttime) VALUES ('$target', '$starttime');

第二页显示:

$starttime = mysql_query("SELECT starttime FROM countdowntimer");
$target = mysql_query("SELECT target FROM countdowntimer");
$difference = $target-$starttime
$min =  floor($difference/60)                                                                    
$sec = floor($difference-($min*60))
if ($difference < 0) {
   echo '0:00'; }
else {
   echo $min . ':' . $sec; }

好吧,我的$target正在输入00:00:00,我的显示页面显示为“0.1”。变量是$ startime =资源ID#3,$ target =资源ID#4,$ difference = 1,$ min = 0,$ sec = 1.

第一个问题:如何输入当前时间+5分钟 第二个问题:您是否有任何关于使用值显示为min:sec的提示。我希望min显示为1位数然后显示0,秒数小于10时显示为:09,:08等。

感谢。

2 个答案:

答案 0 :(得分:2)

mysql_query()返回一个mysql结果对象,而不是您从数据库中选择的值。正确的代码序列是

$result = mysql_query("... your query here ...") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
    $row = mysql_fetch_array($result);
    $value = $row[0];
} else {
    ... query didn't return anything
}

日期数学可能如下:

$starttime = time(); // PHP's date values are simply "seconds since jan 1/19170"
$target = $now + (5 * 60);

$query = "INSERT INTO countdowntimer (target, starttime) VALUES (from_unixtimestamp($target), from_unixtimestamp($starttime));"
... query stuff here ...

或者如果你想在mysql中完全做到这一点:

INSERT INTO countdowntimer (target, starttime) VALUES (DATE_ADD(now(), INTERVAL 5 MINUTE), now())

然后是:

$query = "SELECT target, starttime FROM countdowntimer";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($result);
$target = $result['target'];
$starttime = $result['target'];

等等。

$min = (int)($difference / 60); // get minutes
$sec = $difference % 60;  // get the remainder

$fancy_string = sprintf('%d:%02d', $min, $sec);

答案 1 :(得分:1)

有两种方法可行。

一种方式是strtotime: http://php.net/manual/en/function.strtotime.php

您可以表达如下:

$timestamp = strtotime('+ 5 minutes', $target);

或者你可以使用mktime来增加时间:

$date = date_parse($target);
//the above puts your date into an array
$timestamp = mktime($date['hour'], ($date['minutes'] + 5), $date['seconds'], $date['month'], $date['day'], $date['year']);
//now you can format your date with the date function
date('F d, Y h:i:s', $timestamp);