Skip to content

fix: ISO8601 should take priority over yyyyMMddHHmmss in Instant write, for issue #4003#7632

Open
wenshao wants to merge 1 commit into
mainfrom
fix/issue-4003-instant-iso8601
Open

fix: ISO8601 should take priority over yyyyMMddHHmmss in Instant write, for issue #4003#7632
wenshao wants to merge 1 commit into
mainfrom
fix/issue-4003-instant-iso8601

Conversation

@wenshao
Copy link
Copy Markdown
Member

@wenshao wenshao commented Apr 25, 2026

Summary

  • When the JSONWriter.Context has dateFormat="iso8601" (the runtime form that fastjson1's SerializerFeature.UseISO8601DateFormat resolves into) ISO8601 must take priority over any string-pattern shape flags such as yyyyMMddhhmmss19/14/8/10.
  • Previously the codec evaluated those flags purely against the codec instance + context's pattern flags, so a setup that had been initialized with dateFormat="yyyy-MM-dd HH:mm:ss" and later switched to ISO8601 could still hit the yyyyMMddhhmmss19 path and produce "2026-02-24 14:50:00" instead of "2026-02-24T14:50:00Z".
  • Compute a single iso8601 effective flag and gate the yyyyMMddhhmmss shape paths on !iso8601, so an explicit ISO8601 request always wins.

Fixes #4003.

Test plan

  • New Issue4003 test covering: ISO8601 alone, ISO8601 after a default yyyy-MM-dd HH:mm:ss, default yyyy-MM-dd HH:mm:ss without ISO8601 (regression), and no-format default.
  • All *Instant*, *ISO8601*, *DateTimeCodec*, Issue* tests pass (37 tests).

…e, for issue #4003

When the JSONWriter.Context has dateFormat="iso8601" (the runtime form
that fastjson1's SerializerFeature.UseISO8601DateFormat resolves into)
ISO8601 must take priority over any string-pattern shape flags such as
yyyyMMddhhmmss19/14/8/10. Previously the codec evaluated those flags
purely against the codec instance + context's pattern flags, so a
configuration that had been set up with dateFormat="yyyy-MM-dd HH:mm:ss"
and later switched to ISO8601 could still hit the yyyyMMddhhmmss19 path
and produce "2026-02-24 14:50:00" instead of "2026-02-24T14:50:00Z".

Compute a single iso8601 effective flag and gate the yyyyMMddhhmmss
shape paths on !iso8601, so an explicit ISO8601 request always wins.
@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


wenshao seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] 时间序列化的问题,在不同小版本之间序列化结果不一致!

2 participants