Получить дату сдачи в аренду проекта - PullRequest
0 голосов
/ 29 апреля 2018

Я работаю над проектом аренды недвижимости. Для этого я хочу рассчитать срок оплаты за каждый месяц. Вот мой код:

<?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
}   
?>

Это хорошо, но если пользователь вводит какую-то предыдущую дату, например сегодня, 29 апреля, а пользователь вводит 2 февраля. Этот код будет отображаться 1 марта, а я хочу 1 мая. Мне нужна дата в соответствии с текущей датой также. Как я могу это сделать?

1 Ответ

0 голосов
/ 29 апреля 2018

Вы не можете сравнивать отформатированную дату. Вам следует сравнить временную метку (которая является целым числом), чтобы вы могли сохранить результат 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), вы можете использовать операторы сравнения и сохранять временную метку для всей внутренней обработки.

Начиная с 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...