在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等。
感谢。
答案 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);