使用datetime获取结果

时间:2011-04-11 21:34:44

标签: php mysql datetime date mktime

我正在尝试在两个时间间隔之间获取结果。我之前使用Y-m-d构建的另一个网络应用程序已完成此操作,但现在遇到Y-m-d H:i:s问题。代码如下(出于安全原因被屏蔽):

$m5b = date('Y-m-d H:i:s',mktime(0,0,0,0,0,0,date('Y'),date('m'),date('d'),date('H'),date('i')-5,date('s')));
$npm = date('Y-m-d H:i:s',mktime(0,0,0,0,0,0,date('Y'),date('m'),date('d'),date('H'),date('i')+1,date('s')));
$gm = mysql_query("SELECT * FROM acm WHERE lgt !='0000-00-00 00:00:00' AND logged BETWEEN '$m5b' AND '$npm'");

3 个答案:

答案 0 :(得分:2)

我会认真推荐阅读PHP的strtotime()函数,如果您使用的是最新版本的PHP5,那么请使用DateTime对象。这应该会清理你的代码。

使用strtotime()

$t = strtotime('+5 mins');
$mysqlFormatted = date('Y-m-d H:i:s', $t);

使用DateTime类

$t = new DateTime();
$t->modify('+5 mins');
$mysqlFormatted = $t->format('Y-m-d H:i:s');

答案 1 :(得分:1)

在我看来你传递的参数太多了mktime()你传递了12个参数吗?

编辑: 使用来自义务答案的代码实际上应该是:

$m5b = date("Y-m-d H:i:s" , (time() - (5*60)) ); // 5 mins in seconds
$npm = date("Y-m-d H:i:s" , (time() + (1*60)) );

答案 2 :(得分:0)

根据php.net的mktime:

   int mktime (    
    [ int $hour = date("H") 
    [, int $minute = date("i") 
    [, int $second = date("s") 
    [, int $month = date("n") 
    [, int $day = date("j") 
    [, int $year = date("Y") 
    [, int $is_dst = -1 ]]]]]]] )