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"
- 结果: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")))
不过,问题似乎出在字符串的格式上,因为当我简单地使用“今天”时,它会给我正确的日期。
据我所知你用错了 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");
我的 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")))
不过,问题似乎出在字符串的格式上,因为当我简单地使用“今天”时,它会给我正确的日期。
据我所知你用错了 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");