Failed to parse time string in PHP

17,138
$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",
   }

So you just trim the " away:

$fechaHasta = new DateTime(trim($params["fechaHasta"], '"'));

This should work fine.

Share:
17,138
José Carlos
Author by

José Carlos

Hi!!! I'm an analist and software developer. Right now, I'm working with python, node js, react js, javascript in projects like full stack developer or front-end developer or back-end developer. Maybe I have no the skills that you are looking for right now, but ... I can learn and adapt to several environments. Please, if you think that I can help you in your project, feel free to ask whatever you want about my CV or me.

Updated on June 04, 2022

Comments

  • José Carlos
    José Carlos almost 2 years

    I need to create a DateTime from the value received from a form. The problem is that the value is received like a string: "2016-10-10T08:29:06.959Z" and I need to received like 2016-10-10T08:29:06.959Z without quotes, because if I receive with quotes I've got the next error:

    DateTime::__construct(): Failed to parse time string ("2016-10-14T22:00:00.000Z") at position 0 ("): Unexpected character

    When I try to transform the value to a DateTime with:

    $fechaHasta = new DateTime($params["fechaHasta"]);
    

    If I try to use:

    $fecha2 = DateTime::createFromFormat("d-m-Y H:i:s", $data["fechaHasta"]);
    

    I've got an empty object in $fecha2.

    The form from where I send the data is:

    <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> 
    

    So, what I have to do to send the value without quotes or transform the value received in DateTime.