根据用户输入(不是当前周数)计算周数

时间:2017-07-04 14:15:02

标签: php

我正在尝试在PHP中创建一个逻辑,它返回给定周数之前4周的周数,而不是当前的周数。给定周数的输入是$ argv [1],因为脚本是执行CLI的。

$FOURWEEKSAGO = date("W", strtotime("-4 week"));

以上示例是使用当前时间戳,但我正尝试对以下内容执行相同的操作。下面的示例不起作用,但它说明了我想要做的事情。

$FOURWEEKSAGO = $argv[1], strtotime("-4 week");

该功能必须确保在第2周时它将倒数并产生51(4周前)

一点帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

$inputWeek为数字输入值,$week为数字结果周。

如果去年不是闰年:

$week = ($inputWeek + 48) % 52

如果去年是闰年:

$week = ($inputWeek + 49) % 53

为了确定去年是否是闰年,我假设您可以使用:

if ((date("Y") - 2017) % 4 == 0)

...自2017年起是一个"一年又一年的闰年",因此每隔4年就会出现一次。

正如评论中所指出的,如果输入为0,则代码将获得4,可以使用if语句修复。请注意,区分第0周是否与第53周或第52周相同非常重要。总而言之:

if ((date("Y") - 2017) % 4 == 0) 
{
    $week = ($inputWeek + 49) % 53;
    if ($week == 0) $week = 53;
}
else 
{
    $week = ($inputWeek + 48) % 52;
    if ($week == 0) $week = 52;
}