3v4l.org

run code in 300+ 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.0.0


preferences:
138.72 ms | 1003 KiB | 14 Q