在一年中的日期之间的四个期间之间折扣文本PHP

时间:2019-07-18 13:33:43

标签: php

我是PHP的初学者,经过大量搜索后,我在这里询问了它。

我想制作一个文字,使之呼应那个时期的折扣。一共有4个时间段:一月-三月,四月-六月,七月-九月,十月-十二月(每个季度)。

但是,即使我现在在朱利,它仍然显示折扣季度4。 我认为它只看当天的价值,而不看月。

另一个问题是,如何将当前时间更改为静态日期,以便可以使用不同的日期进行测试。

I made the following code:

$current_time = date('d-m-Y');
$quarter1 = date('d-m-Y', strtotime('01-01-2019'));
$quarter2 = date('d-m-Y', strtotime('01-04-2019'));
$quarter3 = date('d-m-Y', strtotime('01-07-2019'));
$quarter4 = date('d-m-Y', strtotime('01-10-2019'));

if (($current_time > $quarter1 && $current_time < $quarter2 && $current_time < $quarter3 && $current_time < $quarter4)){
    // quarter 1
    echo "discount quarter 1";
}
elseif (($current_time > $quarter2 && $current_time < $quarter3 && $current_time < $quarter4)){
    // quarter 2
    echo "discount quarter 2";
}
elseif ($current_time > $quarter3 && $current_time < $quarter4){
    // quarter 3
    echo "discount quarter 3";
}
else {
    // quarter 4
    echo "discount quarter 4";
}

2 个答案:

答案 0 :(得分:1)

如前所述,您正在比较d-m-Y格式的字符串,这将产生意外的结果。相反,您最好只比较时间戳本身。

此代码还简化了if... elseif...结构,因为您可以假设它是否> 2季度(例如),则无需检查日期是否小于2。我也将其更改为<=,以便检查宿舍本身(这将需要确定是否要包括日期)...

$current_time = strtotime("now");
$quarter1 = strtotime('01-01-2019');
$quarter2 = strtotime('01-04-2019');
$quarter3 = strtotime('01-07-2019');
$quarter4 = strtotime('01-10-2019');

if ( $current_time >= $quarter1 )    {
    if ( $current_time <= $quarter2 ){
        // quarter 1
        echo "discount quarter 1";
    }
    elseif ( $current_time <= $quarter3 ){
        // quarter 2
        echo "discount quarter 2";
    }
    elseif ( $current_time <= $quarter4){
        // quarter 3
        echo "discount quarter 3";
    }
    else {
        // quarter 4
        echo "discount quarter 4";
    }
}

答案 1 :(得分:0)

直接比较时间戳更简单 您不需要非常复杂的逻辑

    $current_time = (new DateTime('now'))->getTimestamp();

    if ($current_time < strtotime('01-04-2019')) {
        echo "discount quarter 1";
    } else if ($current_time < strtotime('01-07-2019')) {
        echo "discount quarter 2";
    } else if ($current_time < strtotime('01-10-2019')){
        echo "discount quarter 3";
    } else {
        echo "discount quarter 4";
    }