[英]Compare difference between two dates PHP
我正在尝试与日期进行比较以找出它们之间有多少时间,我知道该怎么做,date_diff(),但是我想然后比较两个日期之间的时间,如果时间大于7天,则执行一些操作,如果不做其他事情。 我认为这听起来很容易,而且我知道可能有相当简单的解决方案,但我只是不喜欢日期和比较。 这是我到目前为止得到的片段,因为它只是switch语句的一种情况,因此其余部分基本上是相同的。
$array = array();
$today = date("Y-m-d"); // get today's date
foreach($arrayOfObjs as $obj){
if ($obj->get("renewalDate") >= $today){
array_push($array, $obj->get("renewalDate"));
}else{
switch($obj->get("recurrencePeriod")){
case 1:
/*
* All cases follow same structure
* Build the date in format Y-m-d from renewalDate out of the obj.
* Loop through the date while it's less than today.
* After date is greater than today return date add to array
*/
$date = DateTime::createFromFormat("Y-m-d", $obj->get('renewalDate'));
while($date <= $today){
$date->add(new DateInterval('P7D'));
}
$diff = date_diff($today, $date);
if($diff->format('%a') <= 7){
$obj->renewalDate($date);
array_push($array, $obj);
}
break;
基本上,我的数据库存储日期,这些日期可以传递,但可能是重复发生的事件。 为了计算下次发生该事件,我检查数据库中的数据是否在今天的日期之前,如果是,那么我继续添加增量(在本例中为每周重复发生的事件7),然后再次比较日期。 在增加的日期经过今天的日期之后,我想找出它是否在7天内,如果是,则将其添加到数组中以返回。 我知道...因为我要添加7,并且在7天之内会发生第一次重复发生的事件就总是在7天之内,但是对于每月事件或更大的事件却不是这样。
所有情况都坏了,因此为了简单起见,我只包括了这一情况。 我可以让date_Diff返回类似7或12之类的数字,或者返回任何数字,但是如何检查该数字是否在我想要的7天内?
谢谢,如果需要澄清任何误解,我将提供更多信息。
我不确定您要做什么,但是如果您只是向前和向后预测日期,并且想知道它们是否都是7天或更长时间,那么接下来该怎么办:
$today = date("Y-m-d");
$todaytime = strtotime($today);
$testdate = "2017-06-31";
$testtime = strtotime($testdate);
$back7days = strtotime("-7 days",$todaytime);
if($testtime < $back7days)
echo "X"; // do somthing if testdate was more than 7 days ago
$fwd7days = strtotime("+7 days", $todaytime);
if($testtime > $fwd7days)
echo "Y"; // do somthing if testdate is more than 7 days in future
只需确保使用小于或小于等于的比较器等即可处理所需的边界条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.