3v4l.org

run code in 300+ PHP versions simultaneously
<?php $dateTimeExample = new DateTime('2009-01-05 12:34:56'); $dateTimes = [ $dateTimeExample->format('Y-m-d H:i:s'), $dateTimeExample->format('c'), $dateTimeExample->format('Y-m-d') ]; var_dump($dateTimes); foreach($dateTimes as $input){ preg_match('~(?<date>\d{4}-\d{2}-\d{2})[\s|T]?(?<time>\d{2}:\d{2}:\d{2})?(?<timezone>[\+|-]\d{2}:\d{2})?~', $input, $matches); $matches['time'] = array_key_exists('time', $matches) ? $matches['time'] : '00:00:00'; $dateTime = sprintf('%s %s', $matches['date'], $matches['time']); $timeZone = array_key_exists('timezone', $matches) ? new \DateTimeZone($matches['timezone']) : new \DateTimeZone('Europe/Amsterdam'); var_dump(\DateTime::createFromFormat('Y-m-d H:i:s', $dateTime, $timeZone)); }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 21, Position 2 = 66
Branch analysis from position: 21
2 jumps found. (Code = 78) Position 1 = 22, Position 2 = 66
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 32
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
2 jumps found. (Code = 43) Position 1 = 45, Position 2 = 52
Branch analysis from position: 45
1 jumps found. (Code = 42) Position 1 = 56
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 52
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 45, Position 2 = 52
Branch analysis from position: 45
Branch analysis from position: 52
Branch analysis from position: 66
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 66
filename:       /in/Wrjl8
function name:  (null)
number of ops:  68
compiled vars:  !0 = $dateTimeExample, !1 = $dateTimes, !2 = $input, !3 = $matches, !4 = $dateTime, !5 = $timeZone
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   NEW                                              $6      'DateTime'
          1        SEND_VAL_EX                                              '2009-01-05+12%3A34%3A56'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !0, $6
    6     4        INIT_METHOD_CALL                                         !0, 'format'
          5        SEND_VAL_EX                                              'Y-m-d+H%3Ai%3As'
          6        DO_FCALL                                      0  $9      
          7        INIT_ARRAY                                       ~10     $9
    7     8        INIT_METHOD_CALL                                         !0, 'format'
          9        SEND_VAL_EX                                              'c'
         10        DO_FCALL                                      0  $11     
         11        ADD_ARRAY_ELEMENT                                ~10     $11
    8    12        INIT_METHOD_CALL                                         !0, 'format'
         13        SEND_VAL_EX                                              'Y-m-d'
         14        DO_FCALL                                      0  $12     
         15        ADD_ARRAY_ELEMENT                                ~10     $12
    4    16        ASSIGN                                                   !1, ~10
   11    17        INIT_FCALL                                               'var_dump'
         18        SEND_VAR                                                 !1
         19        DO_ICALL                                                 
   13    20      > FE_RESET_R                                       $15     !1, ->66
         21    > > FE_FETCH_R                                               $15, !2, ->66
   15    22    >   INIT_FCALL                                               'preg_match'
         23        SEND_VAL                                                 '%7E%28%3F%3Cdate%3E%5Cd%7B4%7D-%5Cd%7B2%7D-%5Cd%7B2%7D%29%5B%5Cs%7CT%5D%3F%28%3F%3Ctime%3E%5Cd%7B2%7D%3A%5Cd%7B2%7D%3A%5Cd%7B2%7D%29%3F%28%3F%3Ctimezone%3E%5B%5C%2B%7C-%5D%5Cd%7B2%7D%3A%5Cd%7B2%7D%29%3F%7E'
         24        SEND_VAR                                                 !2
         25        SEND_REF                                                 !3
         26        DO_ICALL                                                 
   16    27        ARRAY_KEY_EXISTS                                         'time', !3
         28      > JMPZ                                                     ~18, ->32
         29    >   FETCH_DIM_R                                      ~19     !3, 'time'
         30        QM_ASSIGN                                        ~20     ~19
         31      > JMP                                                      ->33
         32    >   QM_ASSIGN                                        ~20     '00%3A00%3A00'
         33    >   ASSIGN_DIM                                               !3, 'time'
         34        OP_DATA                                                  ~20
   17    35        INIT_FCALL                                               'sprintf'
         36        SEND_VAL                                                 '%25s+%25s'
         37        FETCH_DIM_R                                      ~21     !3, 'date'
         38        SEND_VAL                                                 ~21
         39        FETCH_DIM_R                                      ~22     !3, 'time'
         40        SEND_VAL                                                 ~22
         41        DO_ICALL                                         $23     
         42        ASSIGN                                                   !4, $23
   19    43        ARRAY_KEY_EXISTS                                         'timezone', !3
         44      > JMPZ                                                     ~25, ->52
         45    >   NEW                                              $26     'DateTimeZone'
         46        CHECK_FUNC_ARG                                           
         47        FETCH_DIM_FUNC_ARG                               $27     !3, 'timezone'
         48        SEND_FUNC_ARG                                            $27
         49        DO_FCALL                                      0          
         50        QM_ASSIGN                                        ~29     $26
         51      > JMP                                                      ->56
         52    >   NEW                                              $30     'DateTimeZone'
         53        SEND_VAL_EX                                              'Europe%2FAmsterdam'
         54        DO_FCALL                                      0          
         55        QM_ASSIGN                                        ~29     $30
         56    >   ASSIGN                                                   !5, ~29
   21    57        INIT_FCALL                                               'var_dump'
         58        INIT_STATIC_METHOD_CALL                                  'DateTime', 'createFromFormat'
         59        SEND_VAL                                                 'Y-m-d+H%3Ai%3As'
         60        SEND_VAR                                                 !4
         61        SEND_VAR                                                 !5
         62        DO_FCALL                                      0  $33     
         63        SEND_VAR                                                 $33
         64        DO_ICALL                                                 
   13    65      > JMP                                                      ->21
         66    >   FE_FREE                                                  $15
   22    67      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
166.65 ms | 1400 KiB | 19 Q