我从数据库中提取日期,格式化为dd-mm-YYYY ...我要做的是检查当前日期,如果当前日期在数据库的日期之前,则需要打印数据库日期,如果它之后需要打印'继续'。
干杯。
答案 0 :(得分:93)
if( strtotime($database_date) > strtotime('now') ) {
...
答案 1 :(得分:25)
以下列出了所有可能的支票......
“日期过了吗?”
$date = strtotime( $date );
$date > date( "U" )
$date > mktime( 0, 0, 0 )
$date > strtotime( 'now' )
$date > time()
$date > abs( intval( $_SERVER['REQUEST_TIME'] ) )
我在1.000.000迭代上进行了一些性能测试并计算了平均值 - 有序最快到最慢。
+---------------------+---------------+
| method | time |
+---------------------+---------------+
| time() | 0.0000006732 |
| $_SERVER | 0.0000009131 |
| date("U") | 0.0000028951 |
| mktime(0,0,0) | 0.000003906 |
| strtotime("now") | 0.0000045032 |
| new DateTime("now") | 0.0000053365 |
+---------------------+---------------+
ProTip:只需查看功能的长度,即可轻松记住最快的内容。时间越长,功能越慢。
针对上述每种可能性运行以下循环。我将这些值转换为非科学记数法,以便于阅读。
$loops = 1000000;
$start = microtime( true );
for ( $i = 0; $i < $loops; $i++ )
date( "U" );
printf(
'| date("U") | %s |'."\n",
rtrim( sprintf( '%.10F', ( microtime( true ) - $start ) / $loops ), '0' )
);
time()
似乎仍然是最快的。
答案 2 :(得分:4)
我想设定一个特定的日期,所以在2013年12月2日之前使用它来做事情
if(mktime(0,0,0,12,2,2013) > strtotime('now')) {
// do stuff
}
0,0,0
为午夜,12
为月,2
为日,2013
为年。
答案 3 :(得分:3)
if (strtotime($date) > mktime(0,0,0))
应该完成这项工作。
答案 4 :(得分:3)
如果您正在寻找通过MySQL执行此操作的通用方法,您可以简单地使用SELECT
语句,并向其添加WHERE
子句。
这将获取所有行的所有字段,其中存储在字段“date”中的日期在“now”之前。
SELECT * FROM table WHERE UNIX_TIMESTAMP(`date`) < UNIX_TIMESTAMP()
就我个人而言,我发现这种方法对于MySQL中的新手更加温和,因为它使用带有WHERE的标准SELECT语句来获取结果。显然,你可以通过列出它们而不是使用通配符(*)来仅获取相关的字段。
答案 5 :(得分:1)
我已经使用了这个,它的目的是:
if($date < date("Y-m-d") ) {
echo "Date is in the past";}
BR
答案 6 :(得分:0)
使用strtotime将任何日期转换为unix时间戳并进行比较。
答案 7 :(得分:0)
if(strtotime($row['database_date']) > strtotime('now')) echo $row['database_date'];
else echo date("d-m-Y");
无需检查时间,因为如果它们在同一天它会以相同的方式显示相同的日期......
答案 8 :(得分:0)
仅限MySQL的解决方案将是这样的:
SELECT IF (UNIX_TIMESTAMP(`field`) > UNIX_TIMESTAMP(), `field`,'GO AHEAD') as `yourdate`
FROM `table`
答案 9 :(得分:0)
if(strtotime($db_date) > time()) {
echo $db_date;
} else {
echo 'go ahead';
}