datetime does not support timestamps after 2038 on 32-bit
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 36k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
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
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Trước tiên, hãy đọc phần xử lý timestamp trong Modules/_datetimemodule.c quanh dòng 4982 và Python/pytime.c quanh dòng 173, đồng thời lưu ý đến môi trường openSUSE 32-bit đã được báo cáo. Xác định cách triển khai có thể sử dụng hỗ trợ thời gian 64-bit khi có sẵn, sau đó kiểm tra rằng datetime.fromtimestamp(3000000000) thành công trên các nền tảng 32-bit mà không xảy ra lỗi tràn số đã được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- c, linux, python
- Lĩnh vực
- operating-systems
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 38/100