Expiration date (displayed value) gets recalculated after awaiting user input/verification.
User has to react fast to set explicit expiration date (e.g. last second of specific day).
Compact example to reproduce:
gpg --edit-key -> expire -> 20201231T235959
Likely changes to 20210101T0000?? -> 2021-01-01 (on UTC)
see g10/keygen.c: problematic timestamp query in ask_expiredate()