我已经调试了这个遗留代码,并希望对其进行健全性检查.
其目的是允许某人选择运送产品的交货频率.如果有人想要他们的产品每隔一周,系统需要确定他们是否应该在下周或两周后获得订单.我们称之为一周或B周.
请记住,我没有写这个,我只是想弄清楚它,并希望有一些帮助评估其准确性:
if (date("l") == "Monday" ) {
$start = 0;
} else if (date("l") == "Tuesday" || date("l") == "Wednesday" || date("l") == "Thursday" || date("l") == "Friday" || date("l") == "Saturday"|| date("l") == "Sunday") {
$start = -1;
}
// if changing to every other week set to next week's a/b-ness
$a_week_tid = 34;
$b_week_tid = 35;
$every_other_week_frequency_id = 32;
if ($delivery_frequency == $every_other_week_frequency_id) {
$julian = (int) (strtotime('Monday +' . $start . ' week') / 86400);
$julian_week = ($julian-4) / 7;
if ($julian_week % 2) {
$today_a_or_b = $b_week_tid;
$next_week_a_or_b = $a_week_tid;
$a_or_b_week_string = '(A Week)';
} else {
$today_a_or_b = $a_week_tid;
$next_week_a_or_b = $b_week_tid;
$a_or_b_week_string = '(B Week)';
}
} else {
$next_week_a_or_b = NULL;
$a_or_b_week_string = NULL;
}
Run Code Online (Sandbox Code Playgroud)
此代码未被注释或记录.令我困惑的部分是:
是的,使用日期会更容易,而且考虑到闰年,夏令时,所有额外的东西,你不想要处理.
if (date('W')%2==1)
Run Code Online (Sandbox Code Playgroud)
这比上面的SOOOO更容易维护.
我不相信在这种情况下你可以使用 date("W") 。根据 ISO 计算,有时会有 53 周的年份。在这些年中,第 53 周之后是第 01 周,均为奇数,并且基于偶数/奇数 ISO 周数的 A/B 计算将导致两个连续的 A 或 B 周。
原始计算确定从当前星期一或最近星期一(如果今天不是星期一)的 UNIX 纪元算起的天数。这-4会导致 A/B 周标签在星期四发生变化。一周的奇数/偶数是根据固定日期(Unix Epoch)确定的,因此使用原始代码的 A/B 数的振荡不会出现不连续性。
| 归档时间: |
|
| 查看次数: |
6197 次 |
| 最近记录: |