Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 找不到动态返回与今天相对的每周日期数组的函数_Php_Date_Datetime_Php Carbon - Fatal编程技术网

Php 找不到动态返回与今天相对的每周日期数组的函数

Php 找不到动态返回与今天相对的每周日期数组的函数,php,date,datetime,php-carbon,Php,Date,Datetime,Php Carbon,正如标题所说,我一直在谷歌上搜索,但没有任何线索 事情是这样的,假设我有一个函数,它接受一个整数参数。当我调用它时,即scoutWeekly(1),它列出了本月的第一周(1月28日至2月3日)。如果我给出函数的参数2,它将列出本月的第二周(2月4日-2月10日)。等等。。。这一切都应该与这一天相关,例如,如果调用它,则会跳到(1月28日-3月2日) 你们有什么线索或片段吗 function weeks($month, $year) { $num_of_days = date("t", m

正如标题所说,我一直在谷歌上搜索,但没有任何线索

事情是这样的,假设我有一个函数,它接受一个整数参数。当我调用它时,即
scoutWeekly(1)
,它列出了本月的第一周(1月28日至2月3日)。如果我给出函数的参数
2
,它将列出本月的第二周(2月4日-2月10日)。等等。。。这一切都应该与这一天相关,例如,如果调用它,则会跳到(1月28日-3月2日)

你们有什么线索或片段吗

function weeks($month, $year)
{
    $num_of_days = date("t", mktime(0, 0, 0, $month, 1, $year));
    $lastday     = date("t", mktime(0, 0, 0, $month, 1, $year));
    $no_of_weeks = 0;
    $count_weeks = 0;
    while ($no_of_weeks < $lastday)
    {
        $no_of_weeks += 7;
        $count_weeks++;
    }
    return $count_weeks;
}

function getRangeByWeek($weekNo)
{
    $firstDayOfCurrentMonth = date('Y-m-01');
    $globalWeek             = intval(date('W', strtotime($firstDayOfCurrentMonth)));
    $globalYear             = intval(date('Y', strtotime($firstDayOfCurrentMonth)));
    $globalMonth            = intval(date('m', strtotime($firstDayOfCurrentMonth)));
    $totalNumberOfWeeks     = weeks($globalMonth, $globalYear);
    $date                   = new DateTime();
    $result                 = [];
    for ($i = 1; $i <= $totalNumberOfWeeks; $i++)
    {
        $startDate  = $date->setISODate($globalYear, $globalWeek)->format("d M");
        $endDate    = $date->setISODate($globalYear, $globalWeek, 7)->format("d M");
        $result[$i] = $startDate . '-' . $endDate;
        $globalWeek++;
    }
    return $result[$weekNo];
}
echo getRangeByWeek(1);


有一种更简单的方法

function scoutWeekly($n) {
    // today's date
    $today = new DateTime();
    // set to first day of the month
    $today->setDate($today->format('Y'), $today->format('m'), 1);
    // get the Monday earlier
    $today->sub(new DateInterval('P' . ($today->format('N') - 1) . 'D'));
    // add the required number of weeks
    if ($n > 1) {
        $today->add(new DateInterval('P' . ($n - 1) . 'W'));
    }
    // and format the result
    return $today->format('d M') . '-' . $today->add(new DateInterval('P6D'))->format('d M');
}
echo scoutWeekly(1)
输出:

28 Jan-03 Feb

有一种更简单的方法

function scoutWeekly($n) {
    // today's date
    $today = new DateTime();
    // set to first day of the month
    $today->setDate($today->format('Y'), $today->format('m'), 1);
    // get the Monday earlier
    $today->sub(new DateInterval('P' . ($today->format('N') - 1) . 'D'));
    // add the required number of weeks
    if ($n > 1) {
        $today->add(new DateInterval('P' . ($n - 1) . 'W'));
    }
    // and format the result
    return $today->format('d M') . '-' . $today->add(new DateInterval('P6D'))->format('d M');
}
echo scoutWeekly(1)
输出:

28 Jan-03 Feb
我是首席执行官

这就是答案:

私有静态函数addScowtweek(int$addNumb=null):数组
{
$addStart=Carbon::now()->startOfMonth()->addWeek($addNumb)->startOfWeek();
$interval=new\DateInterval('P1D');
$addEnd=Carbon::now()->startOfMonth()->addWeek($addNumb)->endOfWeek();
$dateRange=new\DatePeriod($addStart、$interval、$addEnd);
foreach($dateRange作为$date){
$arrOfDate[]=$date;
}
返回$arrOfDate;
}
结案

我是执行官

这就是答案:

私有静态函数addScowtweek(int$addNumb=null):数组
{
$addStart=Carbon::now()->startOfMonth()->addWeek($addNumb)->startOfWeek();
$interval=new\DateInterval('P1D');
$addEnd=Carbon::now()->startOfMonth()->addWeek($addNumb)->endOfWeek();
$dateRange=new\DatePeriod($addStart、$interval、$addEnd);
foreach($dateRange作为$date){
$arrOfDate[]=$date;
}
返回$arrOfDate;
}

案例结束

提示:获取一个月的第一个工作日(这应该很简单),看看它的值是多少,然后做一些简单的数学加法/减法。如果这个月是2月1-02日,对吗?取决于你如何定义“第一周”。通常情况下,本月超过一半的时间都是周一至周日(或周日至周六,具体取决于您居住的地方)。提示:获取本月第一个工作日(这应该很简单),查看其值,然后做一些简单的数学加法/减法运算。如果查看本月,则为2月1日至2日,对吧?取决于你如何定义“第一周”。通常情况下,本月超过一半的时间是周一至周日(或周日至周六,取决于您居住的地方)的一整周。