Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Serializer] Allow forcing timezone inDateTimeNormalizer during denormalization#60153

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
nicolas-grekas merged 1 commit intosymfony:7.4fromfrankdekker:PR_59807
Nov 1, 2025

Conversation

@frankdekker
Copy link
Contributor

@frankdekkerfrankdekker commentedApr 5, 2025
edited by OskarStark
Loading

QA
Branch?7.4
Bug fix?no
New feature?yes
Deprecations?no
IssuesFix#59807
LicenseMIT

By default theDateTimeNormalizer will denormalize timestamps and date strings that include a timezone toDateTime objects with respective timezone UTC or the timezone from the date string. Even with the context keyTIMEZONE_KEY set, the timezone from the input superceeds the context timezone.

This PR allows to setPRESERVE_CONTEXT_TIMEZONE_KEY context totrue (default:false), which in combination withTIMEZONE_KEY will set the Timezone of the denormalized DateTimes to the given timezone. The timezone from the input will be overwritten.

Documentation

symfony/symfony-docs#20860

OskarStark, bram123, valtzu, Hanmac, mdriessen, and gassan reacted with thumbs up emoji
@carsonbot
Copy link

Hey!

I see that this is your first PR. That is great! Welcome!

Symfony has acontribution guide which I suggest you to read.

In short:

  • Always add tests
  • Keep backward compatibility (seehttps://symfony.com/bc).
  • Bug fixes must be submitted against the lowest maintained branch where they apply (seehttps://symfony.com/releases)
  • Features and deprecations must be submitted against the 7.3 branch.

Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change.

When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor!
If this PR is merged in a lower version branch, it will be merged up to all maintained branches within a few days.

I am going to sit back now and wait for the reviews.

Cheers!

Carsonbot

@carsonbotcarsonbot changed the title[WIP][Serializer] Allow custom timezone in DateTimeNormalizer during denormalization[Serializer] [WIP] Allow custom timezone in DateTimeNormalizer during denormalizationApr 5, 2025
@frankdekkerfrankdekker changed the title[Serializer] [WIP] Allow custom timezone in DateTimeNormalizer during denormalization[Serializer] Allow custom timezone in DateTimeNormalizer during denormalizationApr 5, 2025
@frankdekker
Copy link
ContributorAuthor

Possibility of lowering complexity:

There are currently 2 similar blocks of code for$dateTimeFormat and$defaultDateTimeFormat. The first with a bit more error handling. These blocks could be combined with using the dateTimeFormat in something like$dateTimeFormat ?? $defaultDateTimeFormat ?? null.

I was hesistant to do this immediately because i have no idea why there is different error handling for the context $dateTimeFormat.

@OskarStarkOskarStark changed the title[Serializer] Allow custom timezone in DateTimeNormalizer during denormalization[Serializer] Allow custom timezone inDateTimeNormalizer during denormalizationApr 7, 2025
@mdriessen
Copy link

Is there anything I can do to help this being merged in Symfony 7.4?

@frankdekkerfrankdekkerforce-pushed thePR_59807 branch 2 times, most recently from551c4f8 to8b9a4f9CompareNovember 1, 2025 09:30
@frankdekkerfrankdekkerforce-pushed thePR_59807 branch 2 times, most recently frome95ddf0 todacfe45CompareNovember 1, 2025 10:04
@nicolas-grekasnicolas-grekas changed the title[Serializer] Allow custom timezone inDateTimeNormalizer during denormalization[Serializer] Allow forcing timezone inDateTimeNormalizer during denormalizationNov 1, 2025
@frankdekker
Copy link
ContributorAuthor

@nicolas-grekas Thanks for the feedback. The branch is now up-to-date again with 7.4. There are 3 failings tests but I don't see the relation to my changes though.

Copy link
Member

@nicolas-grekasnicolas-grekas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I almost forgot: Mapping/Loader/schema/serialization.schema.json needs also an update

frankdekker reacted with thumbs up emoji
* @throws InvalidArgumentException
*/
publicfunctionwithTimezone(\DateTimeZone|string|null$timezone):static
publicfunctionwithTimezone(\DateTimeZone|string|null$timezone, ?bool$force =null):static

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Suggested change
publicfunction withTimezone(\DateTimeZone|string|null$timezone,?bool$force =null):static
publicfunction withTimezone(\DateTimeZone|string|null$timezone,bool$force =false):static

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I thought about setting it totrue|false but in the implementation there's a "default context" and given context. Basicly you could set default context to->withTimezone(null, true), and in your custom context->withTimezone('UTC, null). In this way forevery context the timezone will be forced, but per serializer context you can enforce different timezones.

nicolas-grekas reacted with thumbs up emoji
Copy link
Member

@nicolas-grekasnicolas-grekas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

2 nits and GTM, thanks

frankdekker reacted with thumbs up emoji
@nicolas-grekas
Copy link
Member

Thank you@frankdekker.

mdriessen reacted with hooray emoji

@nicolas-grekasnicolas-grekas merged commitc5d0e49 intosymfony:7.4Nov 1, 2025
2 checks passed
This was referencedNov 2, 2025
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@mtarldmtarldmtarld left review comments

@nicolas-grekasnicolas-grekasnicolas-grekas approved these changes

@dunglasdunglasAwaiting requested review from dunglasdunglas is a code owner

@xabbuhxabbuhAwaiting requested review from xabbuh

@lyrixxlyrixxAwaiting requested review from lyrixx

@ycerutoycerutoAwaiting requested review from yceruto

@welcoMatticwelcoMatticAwaiting requested review from welcoMattic

@kbondkbondAwaiting requested review from kbond

@chalasrchalasrAwaiting requested review from chalasr

@OskarStarkOskarStarkAwaiting requested review from OskarStark

@jderussejderusseAwaiting requested review from jderusse

@alexandre-dauboisalexandre-dauboisAwaiting requested review from alexandre-daubois

Assignees

No one assigned

Projects

None yet

Milestone

7.4

Development

Successfully merging this pull request may close these issues.

[Serializer] Allow custom timezone in DateTimeNormalizer during denormalization

6 participants

@frankdekker@carsonbot@mdriessen@nicolas-grekas@mtarld@fabpot

[8]ページ先頭

©2009-2025 Movatter.jp