设置日期时间格式和 soapclient 错误
set dateTime format and soapclient error
我需要以这种特定的日期格式设置日期时间:
2016-10-19T11:06:20.000+00:00
所以我发现这个有效:
'date'=> $dateStart->format('Y-m-d\Th:m:s')
这是来自循环内的数组单元格设置。在多级数组的第一级。
在这组之前,$dateStart
是这样处理的:
$dateStart = new DateTime();
$dateStart->setTimeStamp($inputs['extraData']['dataStart']/1000);
并且 var $inputs['extraData']['dataStart']
包含一个 UnixTimeStamp,如下所示:
1493828407000
所有时间戳都是正确的,按正确的升序排列。
在同一数组的下一级中,我尝试以这种方式设置另一个时间戳:
$timeStamp=$cellaViaggio['timestamp'];
$date3= new DateTime();
$date3->setTimestamp($timeStamp/1000)->format('Y-m-d\Th:m:s');
然后在数组
里面
array('name'=>'TIMESTAMP','value'=>$date3)
然后此数组在 PHP Soap 客户端进行的调用中用作 soap 数据信封。
如果我这样离开,我的 Laravel 会出现以下错误:
ErrorException in TripController.php line 37:
Object of class DateTime could not be converted to string
否则,如果我像那样保留所有内容,但我将格式命令 ( ->format('Y-m-d\Th:m:s') )
移动到数组单元格中,这样写:
array('name'=>'TIMESTAMP','value'=>$date3->format('Y-m-d\Th:m:s'))
这不会引发任何错误,但时间戳是错误的,因为分钟不会改变,每次循环只会增加秒数,而不是分钟!
所以关于时间的事情:
00:01:30
00:01:40
00:01:59
00:01:33
oo:01:03
正如我所说,我们谈论的是渐进式时间戳。
请记住,时间戳被分配给一个数组的数组,以使 soap 信封保持服务器的正确格式。
这是 SOAP 客户端的代码:
$client = new \SoapClient("http://soapserviceserver.xx/services/spPushDataServicePort?wsdl");
try {
return $cli->pushData($param);
} catch (SoapFault $e) {
return $e->getMessage();
}
$params
包含如上所述的数组集。
格式不正确,因为您正在使用
$date3->format('Y-m-d\Th:m:s')
你应该使用
$date3->format('Y-m-d\Th:i:s')
这是一个例子
\Carbon\Carbon::now()->format('Y-m-d\Th:i:s')
结果
2017-06-13T06:44:45
一段时间后的结果2017-06-13T06:45:24
详细了解 PHP 日期格式 here
i : Minutes with leading zeros
如果您想要根据问题中给出的示例获得完美的日期格式,那么您可以使用
date(DATE_ATOM)
结果2017-06-13T18:51:08+05:30
我需要以这种特定的日期格式设置日期时间:
2016-10-19T11:06:20.000+00:00
所以我发现这个有效:
'date'=> $dateStart->format('Y-m-d\Th:m:s')
这是来自循环内的数组单元格设置。在多级数组的第一级。
在这组之前,$dateStart
是这样处理的:
$dateStart = new DateTime();
$dateStart->setTimeStamp($inputs['extraData']['dataStart']/1000);
并且 var $inputs['extraData']['dataStart']
包含一个 UnixTimeStamp,如下所示:
1493828407000
所有时间戳都是正确的,按正确的升序排列。 在同一数组的下一级中,我尝试以这种方式设置另一个时间戳:
$timeStamp=$cellaViaggio['timestamp'];
$date3= new DateTime();
$date3->setTimestamp($timeStamp/1000)->format('Y-m-d\Th:m:s');
然后在数组
里面 array('name'=>'TIMESTAMP','value'=>$date3)
然后此数组在 PHP Soap 客户端进行的调用中用作 soap 数据信封。
如果我这样离开,我的 Laravel 会出现以下错误:
ErrorException in TripController.php line 37: Object of class DateTime could not be converted to string
否则,如果我像那样保留所有内容,但我将格式命令 ( ->format('Y-m-d\Th:m:s') )
移动到数组单元格中,这样写:
array('name'=>'TIMESTAMP','value'=>$date3->format('Y-m-d\Th:m:s'))
这不会引发任何错误,但时间戳是错误的,因为分钟不会改变,每次循环只会增加秒数,而不是分钟! 所以关于时间的事情:
00:01:30
00:01:40
00:01:59
00:01:33
oo:01:03
正如我所说,我们谈论的是渐进式时间戳。
请记住,时间戳被分配给一个数组的数组,以使 soap 信封保持服务器的正确格式。
这是 SOAP 客户端的代码:
$client = new \SoapClient("http://soapserviceserver.xx/services/spPushDataServicePort?wsdl");
try {
return $cli->pushData($param);
} catch (SoapFault $e) {
return $e->getMessage();
}
$params
包含如上所述的数组集。
格式不正确,因为您正在使用
$date3->format('Y-m-d\Th:m:s')
你应该使用
$date3->format('Y-m-d\Th:i:s')
这是一个例子
\Carbon\Carbon::now()->format('Y-m-d\Th:i:s')
结果
2017-06-13T06:44:45
一段时间后的结果2017-06-13T06:45:24
详细了解 PHP 日期格式 here
i : Minutes with leading zeros
如果您想要根据问题中给出的示例获得完美的日期格式,那么您可以使用
date(DATE_ATOM)
结果2017-06-13T18:51:08+05:30