是否可以将数据类型从String更改为Date

时间:2013-05-01 09:28:20

标签: php xml-rpc type-conversion openx

我在使用OpenX API和XML-RPC2进行连接编码时遇到了麻烦。我遇到的问题是fire函数需要的数据类型是dateTime.iso8601。

这是我的代码:

$sdatetime = new DateTime('2013-01-01 00:00:00');
$edatetime = new DateTime('2013-06-01 00:00:00');

$startDate = $sdatetime->format(DateTime::ISO8601);
$endDate = $edatetime->format(DateTime::ISO8601);

try {
    $result = $aClient->agencyPublisherStatistics($sessionId, 1, $startDate, $endDate);
    print_r($result);
} catch (XML_RPC2_FaultException $e) {
    die('Exception #' . $e->getFaultCode() . ' : ' . $e->getFaultString());
}

当我运行上面的脚本时,这是结果错误:

  

异常#3:不正确   传递给方法的参数:通缉dateTime.iso8601,得到字符串   param 3

如果我运行print_r(gettype($startDate));我的类型数据是字符串而非日期

我的问题是,对于变量$startDate$endDate,如何使其数据类型为dateTime.iso8601date而不是string

感谢。

3 个答案:

答案 0 :(得分:1)

看起来您的agencyPublisherStatistics需要特定的XML_RPC2_Value日期对象。您可以使用。

创建
$startDate = XML_RPC2_Value::createFromNative($startDate, ‘datetime’);

结束日期相同..让我知道这是否有效..

答案 1 :(得分:1)

试试这个,

$sdatetime = date(DATE_ISO8601, strtotime('2013-01-01 00:00:00'));
$edatetime = date(DATE_ISO8601, strtotime('2013-06-01 00:00:00')); 

检查以下链接,

http://pear.php.net/manual/en/package.webservices.xml-rpc2.client.php

https://bugs.php.net/bug.php?id=51950

这可能对你有所帮助。

答案 2 :(得分:0)

使用DateTime::setISODate

$sdatetime = new DateTime('2013-01-01 00:00:00');
$edatetime = new DateTime('2013-06-01 00:00:00');

$startDate = $sdatetime->setISODate(2013);
$endDate = $edatetime->setISODate(2013);