我是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";
}
答案 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";
}