如果所需条件大于或小于php中的当前日期,如何检查日期?

时间:2018-09-25 04:20:23

标签: php

下面的代码是我的需要!,我得到的输出为“ 完成”和“ 待处理”。我应该如何获得“达到极限”的输出。

需要的条件

  • 如果$current日期大于$next_due_on_date,则应显示 输出为“待处理”。

  • 在这种情况下,我需要通知,例如“ 30天到期”,即$next_due_on_date达到上限之前。

  • 如果$current日期小于$next_due_on_date,则应显示输出为“已完成”。

请帮助我解决逻辑。 谢谢!

$current_date = date('Y-m-d G:i:s');   //Current date
$next_due_on_date = '24/10/2018';    //$next_due_on
$next_due_on_date = str_replace('/', '-', $next_due_on_date); //Replacing the format with str_replace       
$highlight_date = date("Y-m-d", strtotime("$next_due_on_date 0 years 0 months -30 days"));    //$highlight_date is to subtract the next_due_on_date with -30 days
if($current_date <= $highlight_date){
    $output = "Completed";
}elseif($current_date > $highlight_date){
    $output = "Pending";
}else{
    $output = "Reached the limit"
}
print_r($output);

3 个答案:

答案 0 :(得分:0)

@Arun我没有正确理解您的要求,但据我了解,您可以尝试这样。

<?php

function s2t($value){
    return strtotime($value);
}

$date1 = 
$date2 = date('Y-m-d',strtotime('+30days'));
$date3 = date('Y-m-d',strtotime('-30days'));

if( s2t($date1) > s2t($date2)  ){
    echo "30+ Days left";
}else{
    echo "30 Days Left";
}

答案 1 :(得分:0)

阿伦

我注意到您的代码中有几件事。这里的主要问题是您说过要达到限制,但是您的IF不允许这种情况发生。

让我解释一下原因:首先比较$current_date <= $highlight_date,然后比较$current_date > $highlight_date。由于 current_date 只能是<=或> highlight_date ,因此最后一个else将永远不会运行。

因此,您需要重组IF,以实现目标。

我不确定我是否很好地理解了你的观点,但是如果我愿意,你想:

  1. 比较$current_date <= ($next_due_on_date - 30 days))
  2. Elseif $current_date <= $next_due_on_date
  3. 其他...

所以会是这样(我试图尽可能少地更改您的代码):

$current_date = date('Y-m-d G:i:s');   //Current date
$next_due_on_date = '24/10/2018';    //$next_due_on
$next_due_on_date = str_replace('/', '-', $next_due_on_date); //Replacing the format with str_replace       
$highlight_date = date("Y-m-d", strtotime("$next_due_on_date 0 years 0 months -30 days"));    //$highlight_date is to subtract the next_due_on_date with -30 days
if($current_date <= $highlight_date){
    $output = "Completed";
}elseif($current_date <= $next_due_on_date){
    $output = "Pending";
}else{
    $output = "Reached the limit";
}
print_r($output);

是吗?

答案 2 :(得分:0)

下面的代码运行良好。请检查,它可能用于您要比较两个日期的任何概念。

$current_date = date('Y-m-d G:i:s');
$next_due_on_date = '27/09/2018';
$next_due_on_date = str_replace('/', '-', $next_due_on_date);        
$highlight_lesser_thirdty_date = date("Y-m-d", strtotime("$next_due_on_date 0 years 0 months -30 days"));
$highlight_lesser_thirdtyone_date = date("Y-m-d", strtotime("$next_due_on_date 0 years 1 months -31 days"));
if(($current_date <= $highlight_lesser_thirdtyone_date ) && ($current_date <= $highlight_lesser_thirdty_date)) {
     $status = "Completed";
}elseif(($current_date < $highlight_lesser_thirdtyone_date) && ($current_date > $highlight_lesser_thirdty_date)){
     $status = "Calibration to be conducted";
}elseif($current_date < $next_due_on_date){
     $status = "Pending";
}
print_r($calibration_status);