如何在PHP中调整菜单订购系统的周和年



我正在更新一家餐厅的网站,在那里你可以订购每日菜单,菜单每周都会更改。系统只按周存储菜单,不指定年份。它有一个错误,现在(2015年第53周),如果管理员想进入第一周菜单,它会被解释为2015年的第一周。我想改变这一点,让他们进入下一年的+-10周,并在一月份回到过去的一年。到目前为止,我的代码看起来是这样的,但我相信它不会在三月之后给出正确的年份:

$year = date("Y");
$current_week = date("W");
$w_diff = abs($current_week - $week_number);
// If there is a year change (lower or higher current week and edit week) and it is within 10 weeks, we edit the other year, otherwise current year
// This code is imperfect, need to check mid year as it does not work
if ($current_week > $week_number && $w_diff >= 10) {$year++;}
elseif ($current_week < $week_number && $w_diff >= 10) {$year--;}

$week_number是管理员想要编辑菜单的周数。我想要的是:如果管理员现在想编辑第9周,应该编辑2016年,但如果想看到第40周,应该显示2015年。在2016年的第一周,第52周应该显示2015年,但第10周应该显示的是2015年。为了实现这一点,我可以对该代码进行哪些更改?

您可以这样做,使用模运算符(%):

function get_year($current_year, $current_week, $week_number, $max_forward) {
    $forward = (53 + $week_number - $current_week) % 53 <= $max_forward;
    if ($forward == $week_number < $current_week) {
        $year += $forward ? 1 : -1;
    }
    return $year;
}

第四个论点设定了一周何时被视为未来的规则。因此,你会通过10表示你可以展望未来10周,但任何进一步的努力实际上都会被解释为回顾。

要测试上述功能,您可以执行以下操作:

// test
echo "curr tweek tyear<br>";  
for ($current_week = 1; $current_week < 52; $current_week += 10) {
    for ($week_number = 1; $week_number < 52; $week_number += 10) {
        $year = get_year(2015, $current_week, $week_number, 10);
        echo "$current_week t$week_number t$year<br>";    
    }
}

输出为:

curr    week    year
1       1       2015
1       11      2015
1       21      2014
1       31      2014
1       41      2014
1       51      2014
11      1       2015
11      11      2015
11      21      2015
11      31      2014
11      41      2014
11      51      2014
21      1       2015
21      11      2015
21      21      2015
21      31      2015
21      41      2014
21      51      2014
31      1       2015
31      11      2015
31      21      2015
31      31      2015
31      41      2015
31      51      2014
41      1       2015
41      11      2015
41      21      2015
41      31      2015
41      41      2015
41      51      2015
51      1       2016
51      11      2015
51      21      2015
51      31      2015
51      41      2015
51      51      2015

相关内容

  • 没有找到相关文章

最新更新