DateTime[Immutable]::createFromTimestamp(float) misses support for 64bit integers or 32bit environments
Đang mở
Chưa có ai nhận issue này.
Bug
Extension: date
Status: Needs Triage
- Ngôn ngữ chính
- C
- Star
- 40.4k
- Fork
- 8.2k
- Merge trung bình
- 2 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 96
Mô tả
Description
The following code:
<?php
$dt = DateTime::createFromFormat('U', '2147483647');
var_dump($dt);
$dt = $dt->modify('+1 second');
var_dump($dt);
$ts = $dt->format('U');
$tsf = (float)$ts;
var_dump($ts, $tsf);
$dt2 = DateTime::createFromTimestamp($tsf);
Resulted in this output:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2038-01-19 03:14:07.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
object(DateTime)#1 (3) {
["date"]=>
string(26) "2038-01-19 03:14:08.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
string(10) "2147483648"
float(2147483648)
Fatal error: Uncaught DateRangeError: DateTime::createFromTimestamp(): Argument #1 ($timestamp) must be a finite number between -2147483648 and 2147483647.999999, 2.14748e+9 given
But I expected this output instead:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2038-01-19 03:14:07.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
object(DateTime)#1 (3) {
["date"]=>
string(26) "2038-01-19 03:14:08.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
string(10) "2147483648"
float(2147483648)
object(DateTime)#2 (3) {
["date"]=>
string(26) "2038-01-19 03:14:08.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
PHP Version
>= PHP 8.4
Operating System
32bit environment
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
Bắt đầu với entry point DateTime::createFromTimestamp() và tái hiện ví dụ trên môi trường 32-bit, tập trung vào giá trị float 2147483648. Hoàn tất khi giá trị này được chấp nhận và tạo ra DateTime 2038-01-19 03:14:08 như mong đợi thay vì một DateRangeError.
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, php
- Lĩnh vực
- backend
- 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
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 48/100