PHP日期在6个月内

PHP日期在6个月内,php,date,comparison,Php,Date,Comparison,我如何检查给定日期(即2017年4月)是否在未来6个月内 例如: 4/2017 true 8/2017 false 5/2017 true 我现在: $datum = explode(': ', $given_date); // Separate date from string $datum = str_replace('/', '-', $datum[1]); // Given format month/year $datum = strtotime('01-'.$datum); // G

我如何检查给定日期(即2017年4月)是否在未来6个月内

例如:

4/2017 true
8/2017 false
5/2017 true
我现在:

$datum = explode(': ', $given_date); // Separate date from string
$datum = str_replace('/', '-', $datum[1]); // Given format month/year
$datum = strtotime('01-'.$datum); // Given only month/year
$limit_datum = strtotime('+6 months');

但我现在倾斜了,不知道如何比较它

你需要这样做

$todayDate = time();
$date_6_months = strtotime("+6 months");
$givenDate = strtotime($date);
if ($givenDate > $todayDate && $givenDate < $date_6_months){
     put your code
}
$todayDate=time();
$date_6_months=标准时间(“+6个月”);
$givenDate=strottime($date);
如果($givenDate>$todayDate&$givenDate<$date\u 6个月){
把你的密码
}

使用DateTime,它变得非常简单:

$now = new DateTime();
$input = DateTime::createFromFormat('m/Y', '4/2017');

$diff = $input->diff($now); // Returns DateInterval

// m is months
$lessThanSixMonths = $diff->y === 0 && $diff->m < 6;  // true
$now=new DateTime();
$input=DateTime::createFromFormat('m/Y','4/2017');
$diff=$input->diff($now);//返回日期间隔
//m是个月
$lessThanSixMonths=$diff->y==0&&$diff->m<6;//真的

请参阅和。

编辑:我更改了以前错误的脚本。在这个脚本中,您可以比较两个日期的字符串

    $given_date= "...."; //set given date (m/Y)
    $current_date = date("m/Y",mktime());

    $month_given  = strtok($given_date, '/');
    $year_given = strtok('/');
    $month_now  = strtok($current_date, '/');
    $year_now = strtok('/');

    $diff_year = $year_given - $year_now;
    $diff_month = $month_given - $month_now;
    $our_diff = $diff_year * 12 + $diff_month;

    if($our_diff <= 6 && $our_diff >= 0){
      //less or equal than 6months
    }
    else if($our_diff > 6){
     //more than sixmonths
    }
    else{
    //negative number
    }
$given_date=“…”//设定给定日期(年/月)
$current_date=日期(“m/Y”,mktime());
$month_given=strtok($given_date,“/”);
$year_given=strtok('/');
$month_now=strtok($current_date,'/');
$year_now=strtok('/');
$diff_year=$year_给定-$year_现在;
$diff_month=$month_给定-$month_现在;
$our_diff=$diff_year*12+$diff_month;
如果($our_diff=0){
//少于或等于6个月
}
否则如果($u diff>6){
//六个多月
}
否则{
//负数
}

使用。以
m/Y
格式减去两个字符串将产生无意义的结果。你是对的,我用另一种方法更改了脚本。DankeThis的作品,但我必须做一些修复,以检查是否有真正的日期给定,如果它是空的或格式错误,差异返回致命的错误。但是,在修复后,此功能仍然有效。@Diamonte是的,当然,您仍然需要验证您的用户输入!