datetime datatype не работает в soap php

Это мой код

$c = new soapclient('http://www.redbus.in/WS2/BookingService.asmx?wsdl', array('authentication' => array('LoginID' => 'x','Password'=>'x'))); $timezone = new DateTimeZone('UTC'); $time='2012-04-17T16:50:45'; $date = new DateTime($time,$timezone); $sourceid=array('SourceID'=>'244','DestinationID'=>'477','DateOfJourney' =>$date); $stockprice = $c->GetAvailableRoutes($sourceid); print_r($stockprint); 

он не работает в переменной типа данных datetime format

он показывает ошибку, подобную этой

Неустранимая ошибка: исключение SoapFault: [soap: Client] Сервер не смог прочитать запрос. —> В документе XML есть ошибка (2, 252). —> Строка '' не является допустимым значением AllXsd. в E: \ xampplite \ htdocs \ index1.php: 9 Трассировка стека: # 0 [внутренняя функция]: SoapClient -> __ call ('GetAvailableRou …', Array) # 1 E: \ xampplite \ htdocs \ index1.php ( 9): SoapClient-> GetAvailableRoutes (Array) # 2 {main} выбрано в E: \ xampplite \ htdocs \ index1.php в строке 9

Вам нужно отформатировать его, иначе вы бросаете объект DateTime в свой массив (какой PHP пытается преобразовать в строку, что не работает)

Например:

 $date->format('Ymd H:i:s'); 

Применение

 $sourceid = array('SourceID'=>'244','DestinationID'=>'477','DateOfJourney' => $date->format('Ymd H:i:s')); 

У меня была аналогичная проблема при использовании службы SOAP с PHP. Я исправил его, используя:

$date->format('c');

(Дата ISO 8601, добавленная в PHP 5, выглядит так: 2004-02-12T15: 19: 21 + 00: 00)