Php 如何首先比较两个日期,然后检查天数是否小于或等于7

Php 如何首先比较两个日期,然后检查天数是否小于或等于7,php,Php,第一个日期是今天的日期,第二个日期是从数据库中检索的日期。我想做的是在到期日前7天触发一个警报,到期日是数据库中存储的日期 我尝试了几种不同的方法来解决这个问题,但没有成功。我首先使用strotime函数从检索到的日期中减去天数,然后将其与今天的日期进行比较。这是我的第一次尝试: $date1 = strtotime(date('2013-11-14',strtotime('-7 days'))); $date2 = strtotime(date('Y-m-d')); $check = $da

第一个日期是今天的日期,第二个日期是从数据库中检索的日期。我想做的是在到期日前7天触发一个警报,到期日是数据库中存储的日期

我尝试了几种不同的方法来解决这个问题,但没有成功。我首先使用
strotime
函数从检索到的日期中减去天数,然后将其与今天的日期进行比较。这是我的第一次尝试:

$date1 =  strtotime(date('2013-11-14',strtotime('-7 days')));
$date2 = strtotime(date('Y-m-d'));
$check = $date1 - $date2;
$check = date('j',$check);
if($check <= 7){echo "Under 1 week";}
我认为一个数字无论如何都是一个整数,但我现在知道事实并非如此

我在互联网上做了很多搜索,因为我确信其他人也在尝试做同样的事情,我发现这段有用的代码非常有效:

function e_days($end,$start) {
/************************************************************************/
/* Purpose: To get the elapsed days of date diff as integer.            */
/************************************************************************/
$dtS = new DateTime($start);
$dtE = new DateTime($end);
$int = $dtE->diff($dtS);
$ret = (integer) $int->format('%a');
return $ret;
}  // end function
通常情况下,我只会坚持下去并感到快乐,但我不喜欢在不理解的情况下使用我发现的东西。我不明白的是这句话:

$ret = (integer) $int->format('%a');
什么是“整数”?我假设它必须将数字更改为整数,但在php.net上找不到它作为
函数列出

我还想知道是否有其他方法可以做到这一点,或者这家伙是否做到了

函数积分:

(整数)
将紧跟其后的任何立即数转换为
int
类型。在您的例子中,它将
$int->format('%a')
转换为整数

考虑以下(
int
integer
的别名):

在上面的示例中,
$int=$dtE->diff($dtS)
,因此
int
DateTime
格式的两个
DateTime
对象之间的差异。根据,
format(“%a”)
返回两个对象之间的总天数。使用
(整数)
强制转换返回值可确保返回值为
int
类型

更新

有关类型转换的更多信息,请参见

从文档中:

要将值显式转换为整数,请使用(int)或(integer)强制转换

(int),(整数)-强制转换为整数


您是否有指向(整数)的php.net站点的链接?
function e_days($end,$start) {
/************************************************************************/
/* Purpose: To get the elapsed days of date diff as integer.            */
/************************************************************************/
$dtS = new DateTime($start);
$dtE = new DateTime($end);
$int = $dtE->diff($dtS);
$ret = (integer) $int->format('%a');
return $ret;
}  // end function
$ret = (integer) $int->format('%a');
$str = "10";
$num = (int)$str;
 
if ($str === 10) echo "String";
if ($num === 10) echo "Integer";