我需要根据从表单收到的值创建一个DateTime。问题是收到的值就像一个字符串:" 2016-10-10T08:29:06.959Z"我需要收到类似2016-10-10T08:29:06.959Z
的没有引号的内容,因为如果我收到引号,我就会收到下一个错误:
DateTime :: __ construct():无法解析位置0(")的时间字符串(" 2016-10-14T22:00:00.000Z"):意外字符
当我尝试将值转换为DateTime时:
$fechaHasta = new DateTime($params["fechaHasta"]);
如果我尝试使用:
$fecha2 = DateTime::createFromFormat("d-m-Y H:i:s", $data["fechaHasta"]);
我在$ fecha2中有一个空对象。
我发送数据的表单是:
<form id = "formSearch" class = "menu-table" method = "post" action = "<?php echo $this->basePath('/privado/actividades-planificadas/pai/exportdatatoexcel'); ?>">
<input type = "hidden" name = "codigoPPM" value = "{{searchForm.codigoPPM}}" />
<input type = "hidden" name = "fechaDesde" value = {{searchForm.dt1}} />
<input type = "hidden" name = "fechaHasta" value = {{searchForm.dt2}} />
<input type = "hidden" name = "estado" value = "{{searchForm.estadoSelected.id}}" />
<button type = "submit">
Exportar datos a Excel <img title = "Exportar tabla a Excel" src = "/img/logo-excel.png" />
</button>
</form>
那么,我必须做什么来发送没有引号的值或转换DateTime中收到的值。
答案 0 :(得分:1)
$date = '"2016-10-14T22:00:00.000Z"';
=> ""2016-10-14T22:00:00.000Z""
$fechaHasta = new DateTime($date);
Exception with message 'DateTime::__construct(): Failed to parse time string ("2016-10-14T22:00:00.000Z") at position 0 ("): Unexpected character'
$fechaHasta = new DateTime(trim($date, '"')); /* « notice the trim */
=> DateTime {#174
+"date": "2016-10-14 22:00:00.000000",
+"timezone_type": 2,
+"timezone": "Z",
}
所以你只需要调整"
:
$fechaHasta = new DateTime(trim($params["fechaHasta"], '"'));
这应该可以正常工作。
答案 1 :(得分:0)
function trim()
可以选择从字符串中删除特定字符:
e.g:
echo trim('example"','"');
将输出:示例
答案 2 :(得分:-3)
尝试使用strtotime功能,您也可以设置所需的格式。
示例:
$ date = date(&#39; Y-m-d H:i:s&#39;,strtotime(&#34; 2016-10-14T22:00:00.000Z&#34;))