sql >> Database >  >> RDS >> Mysql

ZF2 valideert datum- en tijdformaat PT_BR altijd De invoer lijkt geen geldige datum te zijn

Na een lange tijd aandacht te hebben besteed aan dit probleem vond ik de juiste en snelle oplossing. Na 6 maanden wetenschap te hebben gemaakt, kreeg ik:

Goed allemaal:

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

Documenten en mensen via internet maken het niet duidelijk, maar Formaat instellen werkt alleen op dit formulier.

En om dit naar Entity te grijpen, moet je je eigen Hydrator schrijven die de DoctrineHydrator uitbreidt:

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);
    }
}

Het maakt het eenvoudig om met elk datumformaat te werken. Je kunt het maken van Locale beweringen op deze Custom Hydrator uitbreiden zoals je wilt.



  1. Hoe ora_hash te gebruiken op een kolom van datatype xmltype

  2. Hoe u het verschil tussen twee datums kunt afronden naar uren

  3. Een SQL-resultaat gebruiken in een foreach-lus

  4. Hoe zoekresultaten op afstand sorteren in Laravel QueryBuilder / MySQL Spatial-pakket?