数据库中的日期以不同的形式返回

时间:2015-07-19 19:12:12

标签: php sql date mysqli phpmyadmin

我试图获取今天的日期,并将其与我的数据库中的日期进行比较,但我的数据库中的日期以与日期函数的日期不同的形式返回,所以如果我在if语句中比较它们,那么值总是为假。有没有办法让我比较它们以便它返回真实状态?

got it?! True
got it second time??? False

1 个答案:

答案 0 :(得分:3)

的strtotime

你在php中有一些很棒的功能可以将你的人类可读日期转换成时间戳。

第一个魔术函数叫做strtotime(字符串到时间):给它你的日期,你得到一个UNIX时间戳!让我们看一些例子:

echo strtotime('2008-04-12 13:24');
echo strtotime('12 april 2008 13:24');
echo strtotime('12.04.2008 13:24');

更强大,strtotime可以识别一些关键字:

echo strtotime('now');
echo strtotime('+4 days');
echo strtotime('+1 month');
echo strtotime('next monday');
echo strtotime('+2 weeks 3 days 4 hours 23 minutes');

strtotime的第二个参数是时间戳,其默认值是实际时间戳(time())。所以echo strtotime(' +4天')是相对于当前时间的。当然你也可以给你的mysql日期strtotime! (注意你也可以使用mysql函数UNIX_TIMESTAMP,它使用更多的资源)。

要比较日期,现在只是一个细节:

// your first date coming from a mysql database (date fields) 
$dateA = '2008-03-01 13:34'; 
// your second date coming from a mysql database (date fields) 
$dateB = '2007-04-14 15:23'; 
if(strtotime($dateA) > strtotime($dateB)){ 
    // bla bla 
}

比子串好,不是吗?!

这是另一个例子,与当前日期无关,但与特定日期有关:

strtotime('23 hours ago', strtotime('2005-04-13 14:00'));

这意味着23小时前相对于第二个给定日期,它必须是时间戳。

用户手册并未提供所支持日期格式的完整说明。 Strtotime(' dd / mm / YYYY')不起作用,只适用于mm / dd / YYYY格式。

日期采用dd / mm / YYYY格式,可以使用explode()函数将其转换为YYYY-mm-dd,但我认为有更好的解决方案。

$date = '25/05/2010';
$date = str_replace('/', '-', $date);
echo date('Y-m-d', strtotime($date));