[英]Comparing mysql dates in php
我正在为朋友创建一个处理截止日期的应用程序。 我设置了一个页面,每个用户都可以看到自己的“工作要做”,并且旁边有一个截止日期。 我的问题是
如何比较从mysql查询返回的截止日期为2010.08.08和今天的日期?
例如...
<?php
while($row = mysql_fetch_array($result)){
$jobfinishdate = $row['jobfinishdate'];
$date = date('Y-m-d');
if ($jobfinishdate>$date)
$jobfinishdate .= " - Not due yet!" ;
else if ($jobfinishdate<$date)
$jobfinishdate .= " - You didn't meet this deadline!";
else if ($jobfinishdate==$date)
$jobfinishdate .= " - Deadline is TODAY!";
}?>
这样就可以了。 但是,我真正想做的是显示一条消息,说“您有5天的截止日期。 任何想法如何解决这个问题?
谢谢。
巴蒂尔。
$days = (strtotime($jobfinishdate) - strtotime($date)) / (60 * 60 * 24);
应该让您在截止日期前剩下的天数。
编辑:上面的方法将始终返回以天为单位的差额-处理是否在到期日之前或之后(可能(如Adam所建议的那样仅使用time()
)):
$date_passed = false;
$days = strtotime($jobfinishdate) - time();
if ($days < 0) { $date_passed = true; }
$days = $days / (60 * 60 * 24);
if (!$date_passed)
{
echo "You have $days days left on this project.";
}
else
{
echo "Deadline has expired $days days ago.";
}
// calculate days left
$daysleft = round( ( strtotime( $jobfinishdate ) - time() ) / 86400 );
// print out text for $daysleft
if( $daysleft == 0 )
print( "Deadline is today!" );
else if ( $daysleft > 0 )
printf( "You have %d days until deadline.", $daysleft );
else
print( "You did not meet the deadline!" );
如果可能的话,我会让数据库返回天数,如下所示:
SELECT jobfinishdate, datediff(jobfinishdate, NOW() AS days) FROM table
然后使用以下天数:
while ($row = mysql_fetch_array($result)){
$jobfinishdate = $row['jobfinishdate'];
$days = $row['days'];
if ($days > 0) {
$jobfinishdate .= " - Not due yet! $days until deadline" ;
} elseif ($days < 0) {
$jobfinishdate .= " - You didn't meet this deadline!";
} else {
$jobfinishdate .= " - Deadline is TODAY!";
}
}
其他说明:
如果您使用的是PHP 5.3.0或更高版本,则可以使用DateTime对象
在SQL查询中:
SELECT
...,
TIMESTAMPDIFF(DAY, NOW(), `date_deadline`) AS days_to_deadline
...
这将在截止日期前产生正数天,而对于到期的任务将产生负数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.