在 Php7 中查找夏季确切午夜的解决方法



好的,这绝对是一个PHP 7错误。我的问题是:你知道任何可靠的解决方法吗?

$date1 = new DateTime('2017-10-14', new DateTimeZone('America/Sao_Paulo'));
print_r($date1);
print_r('<br/>');
print_r('<br/>');
$date2 = new DateTime('2017-10-15', new DateTimeZone('America/Sao_Paulo'));
print_r($date2);
print_r('<br/>');
print_r('<br/>');
$date3 = new DateTime('2017-10-16', new DateTimeZone('America/Sao_Paulo'));
print_r($date3);

这会让我每天午夜,对吧?错。

DateTime Object ( [date] => 2017-10-14 00:00:00.000000 [timezone_type] => 3 [timezone] => America/Sao_Paulo ) 
DateTime Object ( [date] => 2017-10-15 01:00:00.000000 [timezone_type] => 3 [timezone] => America/Sao_Paulo ) 
DateTime Object ( [date] => 2017-10-16 00:00:00.000000 [timezone_type] => 3 [timezone] => America/Sao_Paulo )

现在是15日凌晨一点。将偏移量设置为 -2 并增加一小时。它总是发生在 15 日。Phpversion 是 7.0.22

我真的需要能够可靠地找到午夜! :)

现在是15日凌晨一点... 我真的需要能够可靠地找到午夜!

你不能。 2017年10月15日圣保罗没有当地午夜。 它不存在。 随着当地时间接近午夜,它提前到凌晨 1:00 开始夏令时。 以微秒为单位计算,它如下:

..
2017-10-14 23:59:59.999998 UTC-03:00 (BRT)
2017-10-14 23:59:59.999999 UTC-03:00 (BRT)
2017-10-15 01:00:00.000000 UTC-02:00 (BRST)
2017-10-15 01:00:00.000001 UTC-02:00 (BRST)
...

有关可视化,请参阅此站点。

相关内容

  • 没有找到相关文章

最新更新