【问题标题】:I need help about getting list of days from a week number with PHP我需要有关使用 PHP 从一周数中获取天数列表的帮助
【发布时间】:2019-09-09 14:56:39
【问题描述】:

我想创建一个函数来从周数和年份中获取天数列表作为参数。

我尝试编写以下函数,该函数仅在我的周数大于 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" }

我不明白为什么会出现这个问题,有人有 解释或解决方案?

【问题讨论】:

    标签: php arrays date time strtotime


    【解决方案1】:

    问题在于,当您使用整数表示一周时,当您将其构建到日期中时

    $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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      相关资源
      最近更新 更多