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 - Fatal编程技术网

在php中获得本周的同一天

在php中获得本周的同一天,php,date,Php,Date,我正在运行cron作业,以将任务日期更改为当前周。目前,我正在改变的日期,采取的日期和移动它的1周 当前控制器代码: function weekly_tasks() { $this->load->model('tasksmodel'); $data['weekly_tasks'] = $this->tasksmodel->get_weekly_tasks(); var_dump($data); foreach ($data['week

我正在运行cron作业,以将任务日期更改为当前周。目前,我正在改变的日期,采取的日期和移动它的1周

当前控制器代码:

function weekly_tasks() 
{ 
    $this->load->model('tasksmodel');
    $data['weekly_tasks'] = $this->tasksmodel->get_weekly_tasks();
    var_dump($data);

    foreach ($data['weekly_tasks'] as $row) 
    {
        // change parent task date to next week
        $date = $row->due_date;
        $newdate = strtotime ( '+1 week' , strtotime ( $date ) ) ;
        $newdate = date ( 'Y-m-j' , $newdate );
        $row->due_date = $newdate;

        // set up task update var
        $task_update = $row;
        $task_id = $row->task_id;

        //create this week's task
        $task_create = $row;
        $this->tasksmodel->create_weekly_tasks($task_create);
        var_dump($task_create);


        // update the task to next week
        $this->tasksmodel->update_weekly_tasks($task_update, $task_id);

        var_dump($task_update);

    }
}
上述代码采用2015/10/14上周的日期,并将日期更改为2015/10/21本周的同一工作日

现在我需要选择过去的任何日期,并将其更改为与原始日期相同的当前星期的同一天。因此,2015/09/09应改为本周的同一天2015/10/21


我是否仍然通过获取旧日期和今天之间的间隔差来使用间隔,还是有更好的方法来使用间隔?

我建议不要使用字符串,而是使用DateTime类:


现在不知道$diff的数学是否正确,没有经过测试,可能是另一种情况

你能举例说明你真正想做什么吗?添加了我的控制器代码以及更好的解释$date是字符串还是date类的实例?
    $date = new Date($row->due_date);
    $newdate = new Date(); // this is obviously in the "current" week.

    // get the week day of the "old" and "new" date:
    $oldWD = $date->format("N");
    $newWD = $newdate->format("N");

    // set current weeks weekday as diff of weekday:
    $diff = $oldWD - $newWD;
    if ( $diff > 0 )
        $newdate->add( new DateInterval("P" . $diff . "D") );
    else if ( $diff < 0 ) // $diff == 0 means no changes
        $newdate->sub( new DateInterval("P" . abs($diff) . "D") );

    // adjust times to the time of the old date
    $newdate->setTime(date->format("H"), date->format("i"), date->format("s"));