unexpected behavior of `datetime.astimezone` method
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
my system time zone is UTC+04:00
>>> import datetime
>>> datetime.datetime(9999, 12, 31).astimezone() # same for .astimezone(datetime.UTC)
Traceback (most recent call last):
File "<python-input-46>", line 1, in <module>
datetime.datetime(9999, 12, 31).astimezone()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
ValueError: year must be in 1..9999, not 10000
>>> datetime.datetime(9999, 12, 31, tzinfo=datetime.UTC).astimezone()
datetime.datetime(9999, 12, 31, 4, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400), '+04'))
same behavior for _pydatetime module, but I found that in version 3.11 the behavior is as next:
>>> datetime.datetime(9999, 12, 31).astimezone()
datetime.datetime(9999, 12, 31, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400), '+04'))
EDIT: same behavior for datetime(1, 1, 1):
>>> datetime.datetime(1, 1, 1).astimezone()
Traceback (most recent call last):
File "<python-input-23>", line 1, in <module>
datetime.datetime(1, 1, 1).astimezone()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
ValueError: year must be in 1..9999, not 0
CPython versions tested on:
CPython main branch, 3.13, 3.12
Operating systems tested on:
Linux
Linked PRs
- gh-130752
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem datetime.astimezone-Einstiegspunkt und reproduziere die gemeldeten Fälle für Jahr 1 und Jahr 9999 auf CPython main, wobei du sie mit dem Verhalten von Python 3.11 vergleichst. Prüfe den verknüpften PR gh-130752, bevor du fortfährst; die Arbeit ist abgeschlossen, wenn die Grenzfälle nicht mehr unerwartet Fehler auslösen und das beabsichtigte Verhalten durch die relevanten Tests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 20/100