3v4l.org

run code in 500+ PHP versions simultaneously
<?php $DF_MYSQL = 'Y-m-d H:i:s'; $dtB = DateTime::createFromFormat($DF_MYSQL, '2015-04-02 09:44:47'); $dtA = DateTime::createFromFormat($DF_MYSQL, '2014-02-16 02:00:00'); // DateInterval: B-A $diDiff = $dtA->diff($dtB); // Unix Timestamp: B-A $tsDiff = $dtB->getTimestamp() - $dtA->getTimestamp(); // REPORT DIFFERENCES /* NOTE: DIFFERENCE B-A IS $y => 1 $m => 1 $d => 17 $h => 7 $i => 44 $s => 47 */ print_r($diDiff); // Unix Timestamp: CALCULATE A FROM (B - DIFFERENCE) AND REPORT // NOTE: CORRECT RESULT, SAME AS $dtA: 2014-02-16 02:00:00 $tsShift = $dtB->getTimestamp() - $tsDiff; $dtOut = new DateTime(); $dtOut->setTimestamp($tsShift); print_r($dtOut); // DateInterval: CALCULATE A FROM (B - DIFFERENCE) AND REPORT // NOTE: INCORRECT RESULT, DIFFERENT FROM $dtA: 2014-02-13 02:00:00 $dtB->sub($diDiff); print_r($dtB);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/mUeRk
function name:  (null)
number of ops:  44
compiled vars:  !0 = $DF_MYSQL, !1 = $dtB, !2 = $dtA, !3 = $diDiff, !4 = $tsDiff, !5 = $tsShift, !6 = $dtOut
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, 'Y-m-d+H%3Ai%3As'
    5     1        INIT_STATIC_METHOD_CALL                                      'DateTime', 'createFromFormat'
          2        SEND_VAR                                                     !0
          3        SEND_VAL                                                     '2015-04-02+09%3A44%3A47'
          4        DO_FCALL                                          0  $8      
          5        ASSIGN                                                       !1, $8
    6     6        INIT_STATIC_METHOD_CALL                                      'DateTime', 'createFromFormat'
          7        SEND_VAR                                                     !0
          8        SEND_VAL                                                     '2014-02-16+02%3A00%3A00'
          9        DO_FCALL                                          0  $10     
         10        ASSIGN                                                       !2, $10
    9    11        INIT_METHOD_CALL                                             !2, 'diff'
         12        SEND_VAR_EX                                                  !1
         13        DO_FCALL                                          0  $12     
         14        ASSIGN                                                       !3, $12
   12    15        INIT_METHOD_CALL                                             !1, 'getTimestamp'
         16        DO_FCALL                                          0  $14     
         17        INIT_METHOD_CALL                                             !2, 'getTimestamp'
         18        DO_FCALL                                          0  $15     
         19        SUB                                                  ~16     $14, $15
         20        ASSIGN                                                       !4, ~16
   24    21        INIT_FCALL                                                   'print_r'
         22        SEND_VAR                                                     !3
         23        DO_ICALL                                                     
   28    24        INIT_METHOD_CALL                                             !1, 'getTimestamp'
         25        DO_FCALL                                          0  $19     
         26        SUB                                                  ~20     $19, !4
         27        ASSIGN                                                       !5, ~20
   29    28        NEW                                                  $22     'DateTime'
         29        DO_FCALL                                          0          
         30        ASSIGN                                                       !6, $22
   30    31        INIT_METHOD_CALL                                             !6, 'setTimestamp'
         32        SEND_VAR_EX                                                  !5
         33        DO_FCALL                                          0          
   31    34        INIT_FCALL                                                   'print_r'
         35        SEND_VAR                                                     !6
         36        DO_ICALL                                                     
   35    37        INIT_METHOD_CALL                                             !1, 'sub'
         38        SEND_VAR_EX                                                  !3
         39        DO_FCALL                                          0          
   36    40        INIT_FCALL                                                   'print_r'
         41        SEND_VAR                                                     !1
         42        DO_ICALL                                                     
         43      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
166.07 ms | 3555 KiB | 14 Q