2015-07-19 62 views
1

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

$date = date('y-m-d'); //date from date function ---> 15/07/19 
$dateFromDatabase; //date from database ---> 2015/07/19 

if ($date == $dateFromDatabase) { 
echo "It's the same day."; 
} 

回答

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的第二个参数是时间戳记,它的默认值是实际的时间戳(时间() )。所以回声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)); 
+0

这可以帮助.. – Linus

+0

如果我做这样的事情? $ date ='20'。$ date; – frosty

+1

该函数预期会给出一个包含英文日期格式的字符串,并将尝试将该格式解析为Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数), – Linus

相关问题