datetime does not support timestamps after 2038 on 32-bit
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 36k
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 558
Beschreibung
Bug report
cpython on 32-bit platforms cannot handle dates beyond 2038-01-19
python3.10 -c 'import datetime; datetime.datetime.fromtimestamp(3000000000)'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OverflowError: timestamp out of range for platform time_t
Your environment
- CPython versions tested on: 3.8, 3.9, 3.10
- Operating system and architecture: openSUSE-Tumbleweed 20230110 i586
This comes from
https://github.com/python/cpython/blob/8e9d08b0/Modules/_datetimemodule.c#L4982
https://github.com/python/cpython/blob/8e9d08b0/Python/pytime.c#L173
These could use __time64_t if available or we compile everything with __TIMESIZE=64
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
Beginnen Sie mit der Untersuchung der Zeitstempelverarbeitung in Modules/_datetimemodule.c um Zeile 4982 und in Python/pytime.c um Zeile 173, unter Berücksichtigung der gemeldeten 32-bit-openSUSE-Umgebung. Ermitteln Sie, wie die Implementierung, sofern verfügbar, 64-bit-Zeitunterstützung verwenden kann, und verifizieren Sie anschließend, dass datetime.fromtimestamp(3000000000) auf 32-bit-Plattformen ohne den gemeldeten Überlauf erfolgreich ausgeführt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, linux, python
- Bereich
- operating-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100