为什么 PHP 在计算没有指定时区的时间戳时,在某些日期分配不同的时区?

Why is PHP assigning different timezones on certain dates when calculating timestamps without specified timezones?

当我想计算天数差时(以date1和date2为例):

$date1 = '2019-03-27';
$date2 = '2019-04-01';

echo((strtotime($date2) - strtotime($date1)) / 86400);

结果为:

2

但是做同样的事情:

$date1 = '2019-03-27';
$date2 = '2019-04-01';

echo((strtotime($date2) - strtotime($date1)) / 86400);

Returns:

4.9583333333333

这可以通过以下方式解决:date_default_timezone_set('UTC');

但为什么 PHP 默认情况下某些日期不使用相同的时区?

在您所在的时区 3 月底的某个时间,冬令时变为夏令时,所以其中一天只有 23 小时,所以它不能完全除以 86400(24 小时)。