Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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中,天的范围以月为单位_Php_Operators_Date Range_Date Arithmetic - Fatal编程技术网

在PHP中,天的范围以月为单位

在PHP中,天的范围以月为单位,php,operators,date-range,date-arithmetic,Php,Operators,Date Range,Date Arithmetic,我试图使用天(值为$daydiff)输出月数 整个代码如下所示: $ArrivalDate = $variants_data['ArrivalDate']; $daydiff=floor((abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate))/(60*60*24))); if (!empty($daydiff) && $ArrivalDate == '2013-12-25') { $ETA ='Date N

我试图使用天(值为$daydiff)输出月数

整个代码如下所示:

$ArrivalDate = $variants_data['ArrivalDate'];

$daydiff=floor((abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate))/(60*60*24)));


if (!empty($daydiff) &&  $ArrivalDate == '2013-12-25') {
    $ETA ='Date Not Confirmed';
} 

elseif (!empty($daydiff) &&  is_null($ArrivalDate)) {
    $ETA ='Not available';
}

elseif ( $daydiff > 30 && $daydiff < 60 ) { // anything between 31 and 59 days is 1 month
    $ETA ='1 Month';
}

elseif ( $daydiff > 60 &&  $daydiff < 90  )  { // anything between 61 and 89 days is 2 months
    $ETA ='2 Months';
}

else
{
    $ETA ='';
}
$ArrivalDate=$variants\u数据['ArrivalDate'];
$daydiff=楼层((abs(标准时间(日期)(“Y-m-d”)-标准时间($ArrivalDate))/(60*60*24));
如果(!empty($daydiff)&&$ArrivalDate=='2013-12-25'){
$ETA=‘日期未确认’;
} 
elseif(!empty($daydiff)和&is_null($ArrivalDate)){
$ETA=‘不可用’;
}
elseif($daydiff>30&$daydiff<60){//31到59天之间的任何时间都是1个月
$ETA='1个月';
}
elseif($daydiff>60&$daydiff<90){//在61到89天之间的任何时间都是2个月
$ETA='2个月';
}
其他的
{
$ETA='';
}
这段代码没有给出所需的结果

elseif ( $daydiff > 30 && $daydiff < 60 ) { // anything between 31 and 59 days is 1 month
    $ETA ='1 Month';
}

elseif ( $daydiff > 60 &&  $daydiff < 90  )  { // anything between 61 and 89 days is 2 months
    $ETA ='2 Months';
}

else
{
$ETA ='';
}
elseif($daydiff>30&$daydiff<60){//31到59天之间的任何时间都是1个月
$ETA='1个月';
}
elseif($daydiff>60&$daydiff<90){//在61到89天之间的任何时间都是2个月
$ETA='2个月';
}
其他的
{
$ETA='';
}
结果是“日期未确认”。如果$daydiff值在范围内,则要求的结果为“1个月”或“2个月”

我做错了什么?

试试看

    $ArrivalDate = $variants_data['ArrivalDate'];

if (!empty($ArrivalDate)){
    $ArrivalDate = date('Y-m-d', strtotime($ArrivalDate));

    $daydiff=floor(abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate)) / (60*60*24));

    echo $daydiff;

    if ($ArrivalDate == '2013-12-25') {
        $ETA ='Date Not Confirmed';
    }
    elseif ( $daydiff > 30 && $daydiff < 60 ) { // anything between 31 and 59 days is 1 month
        $ETA ='1 Month';
    }

    elseif ( $daydiff > 60 &&  $daydiff < 90  )  { // anything between 61 and 89 days is 2 months
        $ETA ='2 Months';
    }
    else
    {
        $ETA ='';
    }
} else {
    $ETA ='Not available';
}
$ArrivalDate=$variants\u数据['ArrivalDate'];
如果(!空($ArrivalDate)){
$ArrivalDate=日期('Y-m-d',标准时间($ArrivalDate));
$daydiff=楼层(abs(标准时间(日期)(“Y-m-d”)-标准时间($ArrivalDate))/(60*60*24));
echo$daydiff;
如果($ArrivalDate==“2013-12-25”){
$ETA=‘日期未确认’;
}
elseif($daydiff>30&$daydiff<60){//31到59天之间的任何时间都是1个月
$ETA='1个月';
}
elseif($daydiff>60&$daydiff<90){//在61到89天之间的任何时间都是2个月
$ETA='2个月';
}
其他的
{
$ETA='';
}
}否则{
$ETA=‘不可用’;
}
试试这个 下面是一个简单的例子,可以在没有其他if-else条件的情况下计算月内的日期差

<?php

$date1=date('2013-1-1');
$date2=date('2013-5-2');

echo "date1 :: ".$date1."<br>";
echo "date2 :: ".$date2."<br>";

$date_diff=strtotime($date2)-strtotime($date1);

echo "date difference in months => ".floor(($date_diff)/2628000)." months <br>";
?>


您能给出一些$daydiff的输出示例吗?似乎$ArrivalDate始终是“2013-12-25”,因此第一个if语句是true,因此您的if语句
!空($daydiff)和&$ArrivalDate=='2013-12-25'
评估为true,因此
$daydiff
可能不是空的,
$ArrivalDate
实际上等于
2013-12-25
。请检查这些值,因为在某些产品上,如果没有它们调试您的代码$daydiff=2013-05-05是不可能的,我不知道为什么它默认为“日期未确认”您确定获取的
$ArrivalDate
正确吗?@Chris nice,找到了答案,测试数据库没有更新,我引用了我们的ERP系统AX。到目前为止一切正常。谢谢大家的帮助。