PHP: strtotime() 在不应该的情况下增加了 3 天的日期

PHP: strtotime() adds 3 days to date when it's not supposed to

我的 strtotime() 中有以下字符串:

"2021W32Monday"

我希望得到 2021 年第 32 周星期一的日期,即 2021 年 8 月 9 日。但我得到的是 2021 年 8 月 12 日。

我在其他工作日做了一些实验,这是我得到的每个工作日:

"2021W32Tuesday"

"2021W32Wednesday"

"2021W31Monday"

基本上,它给我的日期似乎都超过了 3 天。为什么会这样?我在任何地方都没有任何 +3,我目前使用的整个命令实际上是 var_dump(date('Y-m-d', strtotime("2021W31Monday")))

不过,问题似乎出在字符串的格式上,因为当我简单地使用“今天”时,它会给我正确的日期。

据我所知你用错了 2021W323 其中前 4 位数字 2021 代表年份。接下来的 3 位 W32 代表周数,最后一位 3 代表一周的第 3 天。

您也可以将它与破折号分隔符一起使用 2021-W32-3

当我用字符串尝试你的示例日期名称时,我得到 -4 天日期。我不确定这是怎么回事。

这是一个附加功能,希望对您有所帮助:)

function get_week_num($day_name) {
  $week_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
  $week_num = array_keys($week_days, $day_name)[0];
  return $week_num + 1;
}

get_week_num("Wednesday");