【发布时间】:2021-08-13 11:02:47
【问题描述】:
我的strtotime() 中有以下字符串:
"2021W32Monday"
我预计会在 2021 年第 32 周(即 2021 年 8 月 9 日)获得星期一的日期。但我得到的是 2021 年 8 月 12 日。
我在其他工作日做了一些实验,以下是我得到的结果:
"2021W32Tuesday"
- 结果:2021 年 8 月 13 日
- 预计:2021 年 8 月 10 日
"2021W32Wednesday"
- 结果:2021 年 8 月 14 日
- 预计:2021 年 8 月 11 日
"2021W31Monday"
- 结果:2021 年 8 月 5 日
- 预计:2021 年 8 月 2 日
基本上,它给我的日期似乎都太远了 3 天。为什么会这样?我在任何地方都没有 +3,我目前使用的整个命令实际上是 var_dump(date('Y-m-d', strtotime("2021W31Monday")))
不过,问题似乎出在字符串的格式上,因为当我简单地使用“今天”时,它给了我正确的日期。
【问题讨论】:
-
我的猜测 - 这真的是
strtotime()应该识别的格式吗?我看到的唯一一个 in the docs 包含周是 compound format,它希望将日期作为数字。 -
我不完全确定你的意思。另外,我使用的一切似乎都有效。 “This Monday”/“Last Monday”将正确地给我最后一个/下一个星期一,而“2021W31”将正确地给我 2021 年第 32 周的第一天,唯一的问题似乎是一旦我将工作日添加到一周年度最佳...但我会尝试将日期添加为数字!