将日期范围拆分为相应的周

2024-03-22

我有日期范围称为 from 和 to。我想将其转换为周。 假设起始日期为 1-10-2014,截止日期为 31-10-2014

那么结果是:

第一周 : 2014年10月1日 至 2014年10月4日 第二次 : 2014年10月5日 至 2014年10月11日 第三次 : 2014年10月12日 至 2014年10月18日 第四次 : 2014年10月19日 至 2014年10月25日 5日 : 2014年10月26日 至 2014年10月31日

在 php.I 尝试了几个代码,但没有给出绝对结果,只给出 01 到 7 、 8 到 14 等。 请帮忙。

我已经尝试过来自的答案

Get the date of one week from today with PHP in stack overflow


date("Y-m-d",strtotime("+1 week"));

此代码片段使用星期日作为一周的第一天:

    $start = new DateTime('2014-10-01');
    $end = new DateTime('2014-10-31 23:59');
    $interval = new DateInterval('P1D');
    $dateRange = new DatePeriod($start, $interval, $end);

    $weekNumber = 1;
    $weeks = array();
    foreach ($dateRange as $date) {
        $weeks[$weekNumber][] = $date->format('Y-m-d');
        if ($date->format('w') == 6) {
            $weekNumber++;
        }
    }

每周都会有所有的日子。

如果您只想要每周的第一天和最后一天,那么您可以使用array_shift and array_pop得到他们。例如,第一周您可以使用:

    $wk1Start = array_shift($weeks[1]); //gives you first day of week 1
    $wk1End = array_pop($weeks[1]); // give you the last day of week 1

如果您想要每周的开始日期和结束日期,可以采用以下方法:

    $ranges = array_map(function($week) {
        return 'start: ' . array_shift($week) 
            . ', end: ' . array_pop($week); },
    $weeks);

这是的输出$ranges for me:

    Array
    (
        [1] => start: 2014-10-01, end: 2014-10-04
        [2] => start: 2014-10-05, end: 2014-10-11
        [3] => start: 2014-10-12, end: 2014-10-18
        [4] => start: 2014-10-19, end: 2014-10-25
        [5] => start: 2014-10-26, end: 2014-10-31
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将日期范围拆分为相应的周 的相关文章

随机推荐