我正在从事物业租赁项目。为此,我想计算每个月的截止日期。这是我的代码:
<?php
echo "<b>Today's Date: </b>".$Currentdate=date("d F Y");//current date
$user_date = date("d F Y",strtotime("2013-02-28"));//date you get from database
if($Currentdate<=$user_date){
echo '<br><b>First Date : </b>'.$first_date = date("d F Y",strtotime('+2 month',strtotime($user_date)));//only if current date is less than user's date
}
else{
echo '<br><b>Second Date : </b>'.$second_date = date("d F Y",strtotime ( '+1 month' , strtotime ( $user_date ) )) ;//only if current date is more than user's date
}
?>
这很好,但是如果用户输入的是某个上一个日期,就像今天是4月29日,但用户进入2月2日。此代码将显示3月1日,但我想要5月1日。我也需要根据当前日期到期日。我怎么能这样做?
答案 0 :(得分:1)
您无法比较格式化的日期。您应该比较时间戳(这是一个整数),因此,您可以保留strtotime()
结果并将其与time()
进行比较:
echo "<b>Today's Date: </b>".$Currentdate=date("d F Y");//current date
$user_time = strtotime("2013-02-28") ;
$user_date = date("d F Y", $user_time);//date you get from database
if (time() <= $user_time){
echo '<br><b>First Date : </b>'.$first_date = date("d F Y",strtotime('+2 month',strtotime($user_date)));//only if current date is less than user's date
}
else{
echo '<br><b>Second Date : </b>'.$second_date = date("d F Y",strtotime ( '+1 month' , strtotime ( $user_date ) )) ;//only if current date is more than user's date
}
使用DateTime对象(由@Spudley指出),您可以使用comparison operators,并为所有内部处理保留时间戳。
从PHP 5.2.2开始,可以使用比较运算符比较DateTime对象。
$current_date = new DateTime();
$user_date = new DateTime("2013-02-02");
echo "<b>Today's Date: </b>".$current_date->format("d F Y");//current date
if ($current_date <= $user_date){
$first_date = $user_date->modify('+2 month');
echo '<br><b>First Date : </b>'. $first_date->format("d F Y");//only if current date is less than user's date
}
else{
$second_date = $user_date->modify('+1 month');
echo '<br><b>Second Date : </b>'.$second_date->format("d F Y") ;//only if current date is more than user's date
}