Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中检查超过6个月的日期范围?_Php_Date_Time - Fatal编程技术网

如何在php中检查超过6个月的日期范围?

如何在php中检查超过6个月的日期范围?,php,date,time,Php,Date,Time,我要做的是检查日期范围不能超过6个月,否则将返回false 这是我的示例代码 <?php $date_string1 = "2013-01-01"; $date_string2 = "2013-08-01"; $date1 = date('Y-m-d',strtotime($date_string1)); $date2 = date('Y-m-d',strtotime($date_string2)); if ($date1 and $date2 r

我要做的是检查日期范围不能超过6个月,否则将返回false

这是我的示例代码

<?php
$date_string1 = "2013-01-01";
$date_string2 = "2013-08-01";
$date1 = date('Y-m-d',strtotime($date_string1));
$date2 = date('Y-m-d',strtotime($date_string2));

if ($date1 and $date2 range more than 6 months, so will){
   return false;
}else{
   return true;
}
?>

这是我的GUI


你知道怎么解决我的问题吗?感谢您使用
diff
功能

$date1 = new DateTime('2013-01-01');
$date2 = new DateTime('2013-08-01');

$diff = $date1->diff($date2);
$month = $diff->format('%m'); // 7

if ($month > 6){
   return false;
}else{
   return true;
}
格式 试试这个-

$diff = abs(strtotime($date2) - strtotime($date1));

//$years = floor($diff / (365*60*60*24));
//$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
//$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

if ($diff > 5184000) // more than 6 months
{
  return false;
}
else
{
  return true;
}

如果年份发生了变化,则提供的解决方案将不起作用,因为diff()提供了包含各种组件的结构

$date1 = new DateTime('2017-10-02');
$date2 = new DateTime('2017-08-01');

$diff = $date1->diff($date2);
echo $diff->y;   // prints '0'
echo $diff->m;   // prints '2'
//
$date1 = new DateTime('2017-10-02');
$date2 = new DateTime('2016-10-01');
$diff = $date1->diff($date2);
echo $diff->y;   // prints '1'
echo $diff->m;   // prints '0'
月份计算应适用于:

$diff = $date1->diff($date2);
$monthsDiff = $diff->y * 12 + $diff->m

if (monthsDiff > 6){
   return false;
}else{
   return true;
}

6个月还是31/30*6天?有那么难吗?我看到的问题是,6个月可以是最大值((4*31+2*30)*24+1)*60*60(7月和8月,DST=15901200秒,最小值((28+3*31+2*30)*24-1)*60*60=15634800使用日期->差异不会解决问题,想想你说的“6个月范围”是什么意思,非常感谢
$date1 = new DateTime('2017-10-02');
$date2 = new DateTime('2017-08-01');

$diff = $date1->diff($date2);
echo $diff->y;   // prints '0'
echo $diff->m;   // prints '2'
//
$date1 = new DateTime('2017-10-02');
$date2 = new DateTime('2016-10-01');
$diff = $date1->diff($date2);
echo $diff->y;   // prints '1'
echo $diff->m;   // prints '0'
$diff = $date1->diff($date2);
$monthsDiff = $diff->y * 12 + $diff->m

if (monthsDiff > 6){
   return false;
}else{
   return true;
}