好的,这绝对是一个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
我真的需要能够可靠地找到午夜! :)
答案 0 :(得分:2)
这是15日早上的一个...... 我真的需要能够可靠地找到午夜!
你做不到。 2017年10月15日 在圣保罗没有当地的午夜。它不存在。当当地时间接近午夜时,它向前移动到凌晨1点,开始夏令时。以微秒计数,它如下:
..
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)
...
有关可视化的信息,请参阅this site。