Skip to content

DateTimeNormalizer ignores format when denormalize #29030

Closed
@benjamin-aubry

Description

@benjamin-aubry

Symfony version(s) affected: 4.1.6

Description
If I'm not mistaken, DateTimeNormalizer ignores format when denormalize

How to reproduce

<?php
require_once __DIR__.'/vendor/autoload.php';
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;

$format = 'd/m/Y';
$string = '01/10/2018';
$dateTimeNormalizer = new DateTimeNormalizer($format);
$date = \DateTime::createFromFormat($format, $string);

// Normalize OK, shows '01/10/2018'
var_dump($dateTimeNormalizer->normalize($date)); 

$date2 = $dateTimeNormalizer->denormalize($date->format($format),\DateTime::class);
// Denormalize KO, shows '10/01/2018' instead of '01/10/2018'
// when day is gretter than 12, this throw an PHP Fatal error
var_dump($date2->format($format)); 

Possible Solution
Use the format attribute of class DateTimeNormalizer in the denormalize method (line 79)

Additional context

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions