0

日を使用して月数を出力しようとしています($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 ='';
}

コードのこのセクションでは、必要な結果が得られません

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 ='';
}

結果として「Date Not Confirmed」が表示されます。$daydiff 値が範囲内にある場合、必要な結果は「1 か月」または「2 か月」です。

ここで何が間違っていますか?

4

2 に答える 2

0

試す

    $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';
}
于 2013-04-10T10:34:34.180 に答える
0

これを試してください ここでは、他の場合の条件を追加せずに月の日付差をカウントする簡単な例です

<?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>";
?>
于 2013-04-10T10:35:19.100 に答える