3v4l.org

run code in 300+ PHP versions simultaneously
<?php $datetime_before = date_create('now'); $datetime_before->setTime(1,1,1,1); $datetime_after = clone($datetime_before); $datetime_after->modify('-100 ms'); $string = $datetime_after->format('Y-m-d H:i:s.u'); if (str_contains($string, "-999")) { echo 'before: '; var_dump($datetime_before); echo PHP_EOL; echo 'after: '; var_dump($datetime_after); echo PHP_EOL; exit; }
Output for 8.1.23 - 8.1.33, 8.2.10 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Output for 8.2.6
before: object(DateTime)#1 (3) { ["date"]=> string(26) "2023-06-04 01:01:01.000001" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Amsterdam" } after: object(DateTime)#2 (3) { ["date"]=> string(26) "2023-06-04 01:01:01.-99999" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Amsterdam" }
Output for 8.1.19
before: object(DateTime)#1 (3) { ["date"]=> string(26) "2023-06-05 01:01:01.000001" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Amsterdam" } after: object(DateTime)#2 (3) { ["date"]=> string(26) "2023-06-05 01:01:01.-99999" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Amsterdam" }
Output for 7.1.33
Fatal error: Uncaught Error: Call to undefined function str_contains() in /in/YDEq2:12 Stack trace: #0 {main} thrown in /in/YDEq2 on line 12
Process exited with code 255.

preferences:
76.22 ms | 410 KiB | 5 Q