sql >> Base de Datos >  >> RDS >> Mysql

ZF2 validando el formato de fecha y hora PT_BR siempre La entrada no parece ser una fecha válida

Después de mucho tiempo prestando atención a este problema, encontré la solución correcta y rápida. Después de 6 meses haciendo ciencia, obtuve:

Muy bien:

    $traindate = new Element\DateTime('trainDate');
    $traindate->setAttributes(array(
        'name' => 'trainDate',
        'id' => 'trainDate',
        'size' => '30',
        'class' => 'datepicker',
    ));
    $traindate->setFormat('d/m/Y'); //ONLY WORKS ON THIS FORMAT.

Los documentos y las personas a través de Internet no lo aclaran, pero configurar el formato solo funciona en este formulario.

Y para llevar esto a Entity, necesitas escribir tu propio Hydrator extendiendo el DoctrineHydrator:

namespace Application\Hydrator;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject;

class MyCustomHydrator extends DoctrineObject {
    protected function handleTypeConversions($value, $typeOfField) 
    {

        if($typeOfField == 'datetime'){
            return \DateTime::createFromFormat('d/m/Y', $value);
        }

        return parent::handleTypeConversions($value, $typeOfField);
    }
}

Es simplificar el trabajo con cualquier formato de fecha. Puede ampliar aún más la realización de aserciones de Locale en este Custom Hydrator como desee.