当前位置: 首页 > 知识库问答 >
问题:

无法在PHP中分析时间字符串

澹台鸿光
2023-03-14

我需要从表单接收的值创建一个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&nbsp;&nbsp;&nbsp;<img title = "Exportar tabla a Excel" src = "/img/logo-excel.png" />
    </button>
</form> 

所以,我必须做什么来发送不带引号的值或转换在DateTime中接收的值。

共有3个答案

范浩荡
2023-03-14

尝试strtotime函数,您也可以设置所需的格式。

例子:

$date=日期('Y-m-d H:i:s',标准时间('2016-10-14T22:00:00.000Z'))

许博达
2023-03-14

函数trim()具有从字符串中删除特定字符的选项:例如:

echo trim('example"','"');

将输出:示例

海保臣
2023-03-14
$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"], '"'));

这应该行得通。

 类似资料:
  • 我已经研究过关于同一错误的其他问题,但我很难将它们应用到我的情况中。 这是我得到的错误: 致命错误:未捕获异常“exception”,消息为“DateTime::u-construct()[DateTime.-construct]:无法分析位置10(1)处的时间字符串(2013-07-22164:50:00):在/Applications/XAMPP/xamppfiles/htdocs/Festi

  • 我正试图以小时为单位显示自这样一个日期以来的数字。。。 这是给我的错误信息。。。 有人知道我哪里出错了吗?

  • 我有一个返回日期/时间值的表单。这是相关位的代码(这是Knockout JS中的javascript代码,该网站使用该代码,以及使用Symfony进行验证的Propel代码,以及使用MomentJS进行日期格式化的代码): 不幸的是,提交表单时,会返回以下错误: 致命错误:未捕获的异常'异常'与消息'DateTime::__construct():未能解析时间字符串(开始日期)在位置0(s):在数

  • 我在尝试使用时间戳创建新的DateTime对象时出现了此构造错误: 异常:DateTime::construct():未能分析位置8(8)处的时间字符串(1372622987):DateTime中出现意外字符- 对象创建代码为: 其中$dbResult- 1372622987 对于传递的无效格式,我可以理解这个错误,但这是一个真正的时间戳。 原因很奇怪:我运行了一个脚本来创建一个新的DateTim

  • 问题内容: 我有一个日期时间字符串,我不知道如何在Python中解析它。 字符串是这样的: 我试过了 但是Python引发 根据Python文档: %z UTC偏移量,格式为+ HHMM或-HHMM(如果对象是天真对象,则为空字符串)。 解析此时间字符串的正确格式是什么? 问题答案: 时区解析有问题。看一下包装:

  • 我正在使用下面的函数计算从出生日期(欧洲格式DD/MM/YYYY)算起的人的年龄(以年为单位),这些日期作为文本存储在Wordpress高级自定义字段中 在大多数情况下,它工作正常,但在某些情况下,我得到以下错误: 工作正常的数据示例:$age=get_age($birthday); 对于$birth value=05/04/1946,它可以正常工作,但是对于$birth value=26/01/