我需要有关使用 PHP 从周数中获取天数列表的帮助
I need help about getting list of days from a week number with PHP
我想创建一个函数来从周数和年份中获取天数列表作为参数。
我尝试编写以下函数,它仅在我的周数大于 10 时有效。
public function getDaysofWeek(int $year, int $week){
// ...
$days = array();
for($d=1; $d<8; $d++) {
$days[] = date('d/m/Y', strtotime($year."W". $week .$d));
}
var_dump($days);
// ...
对于 2019 年的第 37 周(今天的一周),我得到了这个(实际上是正确的结果):
array(7) { [0]=> string(10) "09/09/2019"
[1]=> string(10) "10/09/2019"
[2]=> string(10) "11/09/2019"
[3]=> string(10) "12/09/2019"
[4]=> string(10) "13/09/2019"
[5]=> string(10) "14/09/2019"
[6]=> string(10) "15/09/2019" }
但是当我的周数小于 10 时,我得到了这个(这里是 2019 年的第 5 周):
array(7) { [0]=> string(10) "16/12/2019"
[1]=> string(10) "23/12/2019"
[2]=> string(10) "30/12/2019"
[3]=> string(10) "01/01/1970"
[4]=> string(10) "01/01/1970"
[5]=> string(10) "01/01/1970"
[6]=> string(10) "01/01/1970" }
我不明白为什么会出现这个问题,有人有
解释或解决方案?
问题在于,当您在周中使用整数时,当您将其构建到
中的日期时
$days[] = date('d/m/Y', strtotime($year."W". $week .$d));
由于日期格式不正确 (2019W5
),您最终会遇到错误,您需要确保周数为 2 位数。
这只是对周进行格式化以确保其显示为 2019W05
...
$days[] = date('d/m/Y', strtotime($year."W".
sprintf("%02d", $week) .$d));
我想创建一个函数来从周数和年份中获取天数列表作为参数。
我尝试编写以下函数,它仅在我的周数大于 10 时有效。
public function getDaysofWeek(int $year, int $week){
// ...
$days = array();
for($d=1; $d<8; $d++) {
$days[] = date('d/m/Y', strtotime($year."W". $week .$d));
}
var_dump($days);
// ...
对于 2019 年的第 37 周(今天的一周),我得到了这个(实际上是正确的结果):
array(7) { [0]=> string(10) "09/09/2019"
[1]=> string(10) "10/09/2019"
[2]=> string(10) "11/09/2019"
[3]=> string(10) "12/09/2019"
[4]=> string(10) "13/09/2019"
[5]=> string(10) "14/09/2019"
[6]=> string(10) "15/09/2019" }
但是当我的周数小于 10 时,我得到了这个(这里是 2019 年的第 5 周):
array(7) { [0]=> string(10) "16/12/2019"
[1]=> string(10) "23/12/2019"
[2]=> string(10) "30/12/2019"
[3]=> string(10) "01/01/1970"
[4]=> string(10) "01/01/1970"
[5]=> string(10) "01/01/1970"
[6]=> string(10) "01/01/1970" }
我不明白为什么会出现这个问题,有人有 解释或解决方案?
问题在于,当您在周中使用整数时,当您将其构建到
中的日期时$days[] = date('d/m/Y', strtotime($year."W". $week .$d));
由于日期格式不正确 (2019W5
),您最终会遇到错误,您需要确保周数为 2 位数。
这只是对周进行格式化以确保其显示为 2019W05
...
$days[] = date('d/m/Y', strtotime($year."W".
sprintf("%02d", $week) .$d));