我需要以这种特定日期格式设置dateTime:
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会出现错误:
TripController.php第37行中的ErrorException: 类DateTime的对象无法转换为字符串
否则,如果我将所有这些都留下,但我将格式命令( ->format('Y-m-d\Th:m:s') )
移到数组单元格中,如下所示:
array('name'=>'TIMESTAMP','value'=>$date3->format('Y-m-d\Th:m:s'))
这没有引发任何错误,但时间戳错了,因为分钟不会改变,只是第二次在每个循环都增加,但不是分钟! 所以有关时间的事情:
00:01:30
零点01分40秒
0时01分59秒
0时01分33秒
OO:01:03
正如我所说,我们谈论渐进式时间戳 请记住,时间戳被分配给Array of Array of Array,以使soap信封保持正确的服务器格式。
这是SOAP客户端的代码:
$client = new \SoapClient("http://soapserviceserver.xx/services/spPushDataServicePort?wsdl");
try {
return $cli->pushData($param);
} catch (SoapFault $e) {
return $e->getMessage();
}
$params
包含如上所述的数组。
答案 0 :(得分:1)
格式不正确,因为您正在使用
$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:带前导零的分钟
如果您想根据问题中给出的示例获得完美的日期格式,那么您可以使用
date(DATE_ATOM)
结果2017-06-13T18:51:08+05:30