3v4l.org

run code in 300+ PHP versions simultaneously
<?php function display(\DateTimeInterface $start, \DateTimeInterface $end) { echo $start->format('Y-m-d H:i T') . ' to ' . $end->format('Y-m-d H:i T') . \PHP_EOL; $periods = new \DatePeriod($start, new \DateInterval('PT1H'), $end); $hours = iterator_count($periods); echo $hours . ' hours (iterator_count)'; echo \PHP_EOL; $diff = $end->getTimestamp() - $start->getTimestamp(); $hours = $diff / ( 60 * 60 ); echo $hours . ' hours (60 * 60)'; echo \PHP_EOL; $diff = $end->diff($start); $hours = $diff->h + ($diff->days * 24); echo $hours . ' hours (days * 24)'; } function go(\DateTimezone $tz) { date_default_timezone_set($tz->getName()); //DST starts Apr. 2nd 02:00 and moves to 03:00 display( new \DateTime('2006-04-01T12:00:00'), new \DateTime('2006-04-02T12:00:00') ); echo \PHP_EOL . \PHP_EOL; //DST ends Oct. 29th 02:00 and moves to 01:00 display( new \DateTime('2006-10-28T12:00:00'), new \DateTime('2006-10-29T12:00:00') ); echo \PHP_EOL . \PHP_EOL; //full year display( new \DateTime('2006-01-01T12:00:00'), new \DateTime('2007-01-01T12:00:00') ); } go(new \DateTimezone('America/New_York')); echo \PHP_EOL . \PHP_EOL . '---------' . \PHP_EOL . \PHP_EOL; go(new \DateTimezone('UTC'));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/QBQUB
function name:  (null)
number of ops:  14
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   47     0  E >   INIT_FCALL                                               'go'
          1        NEW                                              $0      'DateTimezone'
          2        SEND_VAL_EX                                              'America%2FNew_York'
          3        DO_FCALL                                      0          
          4        SEND_VAR                                                 $0
          5        DO_FCALL                                      0          
   49     6        ECHO                                                     '%0A%0A---------%0A%0A'
   51     7        INIT_FCALL                                               'go'
          8        NEW                                              $3      'DateTimezone'
          9        SEND_VAL_EX                                              'UTC'
         10        DO_FCALL                                      0          
         11        SEND_VAR                                                 $3
         12        DO_FCALL                                      0          
         13      > RETURN                                                   1

Function display:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/QBQUB
function name:  display
number of ops:  51
compiled vars:  !0 = $start, !1 = $end, !2 = $periods, !3 = $hours, !4 = $diff
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    5     2        INIT_METHOD_CALL                                         !0, 'format'
          3        SEND_VAL_EX                                              'Y-m-d+H%3Ai+T'
          4        DO_FCALL                                      0  $5      
          5        CONCAT                                           ~6      $5, '+to+'
          6        INIT_METHOD_CALL                                         !1, 'format'
          7        SEND_VAL_EX                                              'Y-m-d+H%3Ai+T'
          8        DO_FCALL                                      0  $7      
          9        CONCAT                                           ~8      ~6, $7
         10        CONCAT                                           ~9      ~8, '%0A'
         11        ECHO                                                     ~9
    7    12        NEW                                              $10     'DatePeriod'
         13        SEND_VAR_EX                                              !0
         14        NEW                                              $11     'DateInterval'
         15        SEND_VAL_EX                                              'PT1H'
         16        DO_FCALL                                      0          
         17        SEND_VAR_NO_REF_EX                                       $11
         18        SEND_VAR_EX                                              !1
         19        DO_FCALL                                      0          
         20        ASSIGN                                                   !2, $10
    8    21        INIT_FCALL                                               'iterator_count'
         22        SEND_VAR                                                 !2
         23        DO_ICALL                                         $15     
         24        ASSIGN                                                   !3, $15
    9    25        CONCAT                                           ~17     !3, '+hours+%28iterator_count%29'
         26        ECHO                                                     ~17
   10    27        ECHO                                                     '%0A'
   12    28        INIT_METHOD_CALL                                         !1, 'getTimestamp'
         29        DO_FCALL                                      0  $18     
         30        INIT_METHOD_CALL                                         !0, 'getTimestamp'
         31        DO_FCALL                                      0  $19     
         32        SUB                                              ~20     $18, $19
         33        ASSIGN                                                   !4, ~20
   13    34        DIV                                              ~22     !4, 3600
         35        ASSIGN                                                   !3, ~22
   14    36        CONCAT                                           ~24     !3, '+hours+%2860+%2A+60%29'
         37        ECHO                                                     ~24
   15    38        ECHO                                                     '%0A'
   17    39        INIT_METHOD_CALL                                         !1, 'diff'
         40        SEND_VAR_EX                                              !0
         41        DO_FCALL                                      0  $25     
         42        ASSIGN                                                   !4, $25
   18    43        FETCH_OBJ_R                                      ~27     !4, 'h'
         44        FETCH_OBJ_R                                      ~28     !4, 'days'
         45        MUL                                              ~29     ~28, 24
         46        ADD                                              ~30     ~27, ~29
         47        ASSIGN                                                   !3, ~30
   19    48        CONCAT                                           ~32     !3, '+hours+%28days+%2A+24%29'
         49        ECHO                                                     ~32
   20    50      > RETURN                                                   null

End of function display

Function go:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/QBQUB
function name:  go
number of ops:  39
compiled vars:  !0 = $tz
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   22     0  E >   RECV                                             !0      
   24     1        INIT_FCALL                                               'date_default_timezone_set'
          2        INIT_METHOD_CALL                                         !0, 'getName'
          3        DO_FCALL                                      0  $1      
          4        SEND_VAR                                                 $1
          5        DO_ICALL                                                 
   27     6        INIT_FCALL                                               'display'
   28     7        NEW                                              $3      'DateTime'
          8        SEND_VAL_EX                                              '2006-04-01T12%3A00%3A00'
          9        DO_FCALL                                      0          
         10        SEND_VAR                                                 $3
   29    11        NEW                                              $5      'DateTime'
         12        SEND_VAL_EX                                              '2006-04-02T12%3A00%3A00'
         13        DO_FCALL                                      0          
         14        SEND_VAR                                                 $5
         15        DO_FCALL                                      0          
   31    16        ECHO                                                     '%0A%0A'
   34    17        INIT_FCALL                                               'display'
   35    18        NEW                                              $8      'DateTime'
         19        SEND_VAL_EX                                              '2006-10-28T12%3A00%3A00'
         20        DO_FCALL                                      0          
         21        SEND_VAR                                                 $8
   36    22        NEW                                              $10     'DateTime'
         23        SEND_VAL_EX                                              '2006-10-29T12%3A00%3A00'
         24        DO_FCALL                                      0          
         25        SEND_VAR                                                 $10
         26        DO_FCALL                                      0          
   38    27        ECHO                                                     '%0A%0A'
   41    28        INIT_FCALL                                               'display'
   42    29        NEW                                              $13     'DateTime'
         30        SEND_VAL_EX                                              '2006-01-01T12%3A00%3A00'
         31        DO_FCALL                                      0          
         32        SEND_VAR                                                 $13
   43    33        NEW                                              $15     'DateTime'
         34        SEND_VAL_EX                                              '2007-01-01T12%3A00%3A00'
         35        DO_FCALL                                      0          
         36        SEND_VAR                                                 $15
         37        DO_FCALL                                      0          
   45    38      > RETURN                                                   null

End of function go

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
164.42 ms | 1407 KiB | 22 Q