2015-10-19 88 views
0

我正在運行cron作業以將任務日期更改爲當前星期。目前我正在更改日期,並將日期移至1周。本週同一天在php

電流控制器代碼:

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月21日。

現在我需要採取過去的任何日期,並將其更改爲當前星期的同一天與原始日期。因此2015/09/09應該在2015/10/21這周更新到同一天。

我是否仍然通過獲取舊日期和今天之間的差異來使用區間,還是有更好的方法來做到這一點?

+0

你能舉個例子說明你想要做什麼嗎? – Mitul

+0

添加了我的控制器代碼以及更好的解釋 –

+0

是'$ date'字符串還是Date類的實例? –

回答

0

我建議不要與字符串工作,但與DateTime類:

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

(現在不與$diff數學是否是正確的,沒有測試過,可能是倒過來)