Por el bien de los futuros lectores que seguramente será algún día encontrar este problema (este es el primer mensaje si google "Symfony 2 de fecha y hora de la cadena"), Tenga en cuenta que en Symfony 2 el objeto DateTime NO acepta una cadena con ese formato: "d/m/Y H:i:s"
, y probablemente tampoco admita muchas otras.
En aras de no llegar a ser loca en que, en realidad, he descubierto que la solución más fácil y más seguro para evitar este tipo de errores es la siguiente:
primer lugar, obtener su fecha cadena de cualquier tipo de solicitud que está realizando (en mi caso, una solicitud AJAX genérica) y convertirlo a DateTime Object, este ejemplo asume que necesitamos crear un objeto dateTime para 25/04/2015 15:00
, que es el formato de jQuery UI italian DateTimePicker (eso es solo un ejemplo):
$literalTime = \DateTime::createFromFormat("d/m/Y H:i","25/04/2015 15:00");
(nota: utilizar \
utilizar objeto DateTime de php, de lo que va a utilizar objetos de fecha y hora de Symfony que se producirá una excepción)
Luego, una vez que lo hizo, crear una cadena fecha usando la comodidad formato función, dando al primer parámetro el formato de salida esperado (Y-m-d H:i:s
):
$expire_date = $literalTime->format("Y-m-d H:i:s");
de esta manera usted es 100% seguro de que cualquier tipo de formato que está de paso o recibiendo este se le podrá conve rted y no recibirá ningún tipo de excepción del objeto symfony DateTime, , siempre que proporcione lo que está esperando como entrada.
Sabiendo que esta publicación es bastante antigua, decidí publicarla porque no encontré ninguna otra fuente valiosa, pero esta para entender dónde podría haber estado el problema.
Tenga en cuenta que la mejor solución es enviar la cadena de fecha y hora en el formato correcto, pero si literalmente no tiene forma de hacerlo, la forma más segura de convertir dicha cadena es la de arriba.
¿Estás seguro de que '$ post ['started_at']' contiene lo que quieres? ¿No es '$ _POST ['started_at']'? –
Además, el método y el método 'DateTime' arrojan excepciones en los errores. ¿No obtienes ninguno de esos? Intenta usar 'try/catch'. –