Предупреждение / ошибка для синтаксиса с strtotime и датой

Я только что перенес веб-сайт на новый хост. Не уверен, какое программное обеспечение использовалось на предыдущем хосте, но предполагаю, что это был Apache с PHP. Сейчас я использую сервер WAMP (Apache 2.4.4 и PHP 5.4.16). Сайт построен на фреймворке Codeigniter.

Я получаю две ошибки:

    Message: strtotime() expects parameter 1 to be string, object given

    Message: date() expects parameter 2 to be long, string given

Они сообщают об этом из-за этих строк:

    <?=date("d.m - H:i", utf8_encode(strtotime($job->DateEnd))); ?>

Это не единственная строка с этой ошибкой, в 37 файлах всего 151 попадание только для "strtotime". Я не программист PHP, но это, кажется, моя последняя проблема после того, как потратил 3 дня на создание резервной копии этого сайта!

Если нужен какой-то другой код, скажите мне, а я попытаюсь его найти. Я просто не думал, что уместно помещать сюда каждую строку с результатами поиска "strtotime" и "date".

////////////////////////////////////////////////////////////////////////////////

РЕДАКТИРОВАТЬ (через 3 часа, подробнее): я добавил функцию var_dump сразу после этой другой строки, и она показала следующее:

    object(DateTime)#23 (3) { ["date"]=> string(19) "2014-01-08 23:59:00"["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }

Я думаю, что нашел код, в котором устанавливается $ job.

    function job_info() {

    $project = "";
    $job_arranger = "";
    $project_arranger = "";
    $customer = "";
    $contact = "";
    $delivery_address = "";
    $human_resources = "";
    $vehicle_resources = "";

    $job = $this->job->get_job_data($this->uri->segment(3));
    if($job->IdUser_Arranger){
        $job_arranger = $this->address->get_user_data($job->IdUser_Arranger);   
    }

    if($job->IdProject){
        $project = $this->job->get_project_data($job->IdProject);
    }
    if(is_object($project)) {
        if($project->IdUser_Arranger) {
            $project_arranger = $this->address->get_user_data($project->IdUser_Arranger);           
        }
        if($project->IdAddress_Customer) {
            $customer = $this->address->get_address_data($project->IdAddress_Customer);         
        }
        if($project->IdContact_Customer) {
            $contact = $this->address->get_contact_data($project->IdContact_Customer);
        }
    }
    if($job->IdAddress_Delivery){
        $delivery_address = $this->address->get_address_data($job->IdAddress_Delivery);
    }
    $human_resources = $this->job->get_job_human_resources($this->uri->segment(3));
    $vehicle_resources = $this->job->get_job_vehicle_resources($this->uri->segment(3)); 

    $data['job'] = $job;
    $data['project'] = $project;
    $data['job_arranger'] = $job_arranger;
    $data['project_arranger'] = $project_arranger;
    $data['customer'] = $customer;
    $data['contact'] = $contact;
    $data['delivery_address'] = $delivery_address;
    $data['human_resources'] = $human_resources;
    $data['vehicle_resources'] = $vehicle_resources;
    $this->load->view('jobs/job_info', $data);  



        }   
    }

Я новичок в PHP, поэтому мне трудно понять, где устанавливается $ job.

Я предполагаю, что ошибка возникает из-за того, что мы перешли на новый сервер базы данных SQL, и даты обрабатываются по-другому?


person Mads    schedule 08.01.2014    source источник
comment
Разве ошибки не очевидны?   -  person naththedeveloper    schedule 08.01.2014
comment
your $ job- ›DateEnd вы уверены, что это строка?   -  person Goikiu    schedule 08.01.2014
comment
Сообщение ясное: $job->DateEnd - это объект чего-то, а не строка. Проверьте, что такое $job->DateEnd, например, с помощью var_dump($job->DateEnd).   -  person Marcel Balzer    schedule 08.01.2014
comment
Гойку, конечно, нет :) В предупреждении написано, что это объект. Можете ли вы показать нам код, в котором $ job получает данные?   -  person Stijn van Grinsven    schedule 08.01.2014
comment
Для кого-то это может быть очевидно, но у меня почти нет опыта работы с PHP. Я обновил основной пост, добавив больше информации. Надеюсь, это объясняет?   -  person Mads    schedule 08.01.2014


Ответы (1)


Я считаю, что данные, назначенные $ job-> DateEnd, являются объектом. Либо создайте функцию для извлечения из нее требуемых данных и возврата ее в виде строки (это означает изменение большого количества кода во многих местах), либо измените способ заполнения $ job-> DateEnd (это означает изменение одного ключевого фрагмента в вашем коде).

Я бы выбрал последнее и боролся с проблемой в ее источнике!

Удачи!

person Fyntasia    schedule 08.01.2014