Tôi gặp vấn đề với PHP DateDiff, tôi không hiểu tại sao mỗi múi giờ trả về các kết quả khác nhau, ví dụ trong trường hợp này là Prague trả về 0 tháng và US trở về 1 tháng.DateDiff trả về kết quả khác nhau cho mỗi múi giờ
Sự khác biệt này và cách tôi trả lại 1 tháng (thay vì 30 ngày, khi tôi thêm 1 tháng) như mong đợi?
đang Châu Âu/Prague:
date_default_timezone_set("Europe/Prague");
$from = new \DateTimeImmutable('2016-09-01');
$to = $from->add(new \DateInterval('P1M'));
var_dump($from);
var_dump($to);
var_dump($from->diff($to)->m);
var_dump($from->diff($to)->d);
kết quả Châu Âu/Prague:
object(DateTimeImmutable)#1 (3) {
["date"]=>
string(26) "2016-09-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Prague"
}
object(DateTimeImmutable)#3 (3) {
["date"]=>
string(26) "2016-10-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Prague"
}
int(0)
int(30)
-
đang Mỹ/Thái Bình Dương:
date_default_timezone_set("US/Pacific");
$from = new \DateTimeImmutable('2016-09-01');
$to = $from->add(new \DateInterval('P1M'));
var_dump($from);
var_dump($to);
var_dump($from->diff($to)->m);
var_dump($from->diff($to)->d);
dẫn Mỹ/Thái Bình Dương :
object(DateTimeImmutable)#2 (3) {
["date"]=>
string(26) "2016-09-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
object(DateTimeImmutable)#4 (3) {
["date"]=>
string(26) "2016-10-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
int(1)
int(0)
Bạn có nhớ 'var_dump'ing giờ, phút, giây và mili giây là tốt? – Mchl
Đây có phải là lỗi trong chính PHP không? –
@MichaelHirschler có thể, tôi không chắc chắn, đây là lý do tại sao tôi đăng câu hỏi của mình lên SO – patie