3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Date From-To display class Far from complete, and old. Newer to github, but have been using it for a while. Refactor and redo. */ class Date_from_to { function __construct() { # code... } /** * date_range * * Can return displayed string of the date, or array * * * @param string $start_date * @param string $end_date * @param string $return_array * @return string || array * @notes I want to adjust and change the way this works later since it isn't working as wanted. * rough code is placed for quick production. */ function date_range( $start_date = "", $end_date = "", $return_array = false) { $args = func_get_args(); /* Just in case want to send an array of settings. */ if(is_array($start_date)) { $start_date = $args[0]['start']; $end_date = $args[0]['end']; $display_format = $args[0]['format']; $return_array = $args[0]['array']; } unset($args); if(empty($end_date) || strtotime($start_date) >= strtotime($end_date)) $end_date = $start_date; $obj = new stdClass(); /// Original timestamps $obj->timestamp = new stdClass(); $obj->timestamp->current = strtotime(date('Y-m-d H:i:s')); $obj->timestamp->start = strtotime($start_date); $obj->timestamp->end = strtotime($end_date); /// Array Time for use in differences $obj->ts->current = explode(" ", date('Y m d H i s A')); $obj->ts->start = explode(" ", date('Y m d H i s A', $obj->timestamp->start)); $obj->ts->end = explode(" ", date('Y m d H i s A', $obj->timestamp->end)); /// Current Date $obj->ts_current = new stdClass(); $obj->ts_current->year = $obj->ts->current[0]; $obj->ts_current->month = $obj->ts->current[1]; $obj->ts_current->day = $obj->ts->current[2]; $obj->ts_current->time = $obj->ts->current[3] . ":".$obj->ts->start[4]; $obj->ts_current->ampm = $obj->ts->current[6]; /// Start date $obj->ts_start = new stdClass(); $obj->ts_start->year = $obj->ts->start[0]; $obj->ts_start->month = $obj->ts->start[1]; $obj->ts_start->day = $obj->ts->start[2]; $obj->ts_start->time = $obj->ts->start[3] . ":".$obj->ts->start[4]; $obj->ts_start->ampm = $obj->ts->start[6]; /// End date $obj->ts_end = new stdClass(); $obj->ts_end->year = $obj->ts->end[0]; $obj->ts_end->month = $obj->ts->end[1]; $obj->ts_end->day = $obj->ts->end[2]; $obj->ts_end->time = $obj->ts->end[3] . ":".$obj->ts->start[4]; $obj->ts_end->ampm = $obj->ts->end[6]; /// Differences $obj->dif = new stdClass(); $obj->dif->year = ($obj->ts_end->year > $obj->ts_start->year) || ($obj->ts_start->year > $obj->ts_current->year) ? true : false; $obj->dif->month = $obj->ts_end->month > $obj->ts_start->month ? true : false; $obj->dif->day = $obj->ts_end->day > $obj->ts_start->day ? true : false; $obj->dif->time = $obj->ts_end->time > $obj->ts_start->time ? true : false; $obj->dif->ampm = $obj->ts_end->ampm > $obj->ts_start->ampm ? true : false; /// for Display $obj->display = new stdClass(); $obj->display->start = new stdClass(); $obj->display->start->year = date("Y", $obj->timestamp->start); $obj->display->start->month = date("F", $obj->timestamp->start); $obj->display->start->day = date("j", $obj->timestamp->start); $obj->display->start->time = date("g:i", $obj->timestamp->start); $obj->display->start->ampm = $obj->ts_start->ampm; $obj->display->end = new stdClass(); $obj->display->end->year = date("Y", $obj->timestamp->end); $obj->display->end->month = date("F", $obj->timestamp->end); $obj->display->end->day = date("j", $obj->timestamp->end); $obj->display->end->time = date("g:i", $obj->timestamp->end); $obj->display->end->ampm = $obj->ts_end->ampm; /// Start Display build /// By Default, always show the month/day/time it starts $obj->display->view = "{$obj->display->start->month} {$obj->display->start->day}"; /// $obj->display->view .= ", {$obj->display->start->year}"; /// $obj->display->view .= " {$obj->display->start->time} {$obj->display->start->ampm}"; /// Abstract $obj->display->abstract = new stdClass(); $obj->display->abstract->start = "{$obj->display->start->month} {$obj->display->start->day}"; if($obj->dif->year) $obj->display->abstract->start .= ", {$obj->display->start->year}"; $obj->display->abstract->start .= " {$obj->display->start->time} {$obj->display->start->ampm}"; /// Durational catch if( true === $obj->dif->year || true === $obj->dif->month || true === $obj->dif->day) { /* TODO: Adjust this code to display more logically rather then so directly. Add flexibility to years. - from-month from-day from year to* to-month to-day to-year - January 23, 2009 - February 1, 2009 - format options[] */ $obj->display->view .= " - "; $end_stamp = ""; if($obj->dif->month || $obj->dif->year) { if($obj->dif->year) $end_stamp .= " {$obj->display->end->month} {$obj->display->end->day}, "; else if($obj->dif->month) $end_stamp .= "{$obj->display->end->month} {$obj->display->end->day}, "; } else { $end_stamp .= "{$obj->display->end->day}, "; } /// $end_stamp .= " {$obj->display->end->time} {$obj->display->end->ampm}"; $end_stamp .= " ". $obj->display->end->year; $obj->display->abstract->end = $end_stamp; $obj->display->view .= $end_stamp; } else { /// Abstract catch if no duration set $obj->display->abstract->end = false; // no differences just add the current year. $obj->display->view .= ", ". $obj->display->start->year; } /// Return array if only the data is needed if(true === $return_array) return $obj; /// Return the html constructed view. return $obj->display->view; } } $myDate = new Date_from_to(); print $myDate.date_range('02-06-2014', '02-16-2014');

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0110.00416.98
8.3.50.0130.00317.52
8.3.40.0110.00718.95
8.3.30.0070.01018.73
8.3.20.0040.00418.73
8.3.10.0060.00320.71
8.3.00.0050.00319.25
8.2.180.0110.01118.50
8.2.170.0120.00922.96
8.2.160.0100.00720.57
8.2.150.0080.00024.18
8.2.140.0040.00424.66
8.2.130.0080.00026.16
8.2.120.0040.00420.64
8.2.110.0070.00320.52
8.2.100.0040.00818.03
8.2.90.0060.00319.17
8.2.80.0060.00318.05
8.2.70.0060.00317.63
8.2.60.0050.00318.05
8.2.50.0040.00418.07
8.2.40.0030.00518.22
8.2.30.0060.00318.03
8.2.20.0040.00417.79
8.2.10.0030.00617.73
8.2.00.0000.00817.76
8.1.280.0070.00725.92
8.1.270.0000.00824.66
8.1.260.0030.00526.35
8.1.250.0080.00028.09
8.1.240.0000.01022.32
8.1.230.0050.00523.86
8.1.220.0030.00617.74
8.1.210.0050.00319.04
8.1.200.0040.00417.48
8.1.190.0080.00017.64
8.1.180.0090.00018.10
8.1.170.0040.00418.90
8.1.160.0030.00519.02
8.1.150.0050.00318.62
8.1.140.0000.00817.57
8.1.130.0000.00717.45
8.1.120.0000.00717.50
8.1.110.0000.00717.55
8.1.100.0070.00017.55
8.1.90.0000.00717.59
8.1.80.0070.00017.46
8.1.70.0030.00317.48
8.1.60.0060.00317.75
8.1.50.0000.00817.51
8.1.40.0080.00017.68
8.1.30.0040.00417.64
8.1.20.0050.00317.70
8.1.10.0040.00417.75
8.1.00.0000.00917.68
8.0.300.0020.00520.15
8.0.290.0000.00716.88
8.0.280.0000.00718.55
8.0.270.0030.00317.21
8.0.260.0020.00517.04
8.0.250.0040.00417.15
8.0.240.0000.00717.16
8.0.230.0040.00417.02
8.0.220.0050.00316.98
8.0.210.0060.00317.05
8.0.200.0060.00017.09
8.0.190.0030.00517.13
8.0.180.0000.00817.06
8.0.170.0080.00017.03
8.0.160.0040.00417.02
8.0.150.0070.00317.02
8.0.140.0050.00317.02
8.0.130.0060.00013.53
8.0.120.0050.00317.05
8.0.110.0000.00717.00
8.0.100.0000.00716.94
8.0.90.0050.00317.08
8.0.80.0150.00017.11
8.0.70.0000.00716.89
8.0.60.0050.00216.95
8.0.50.0070.00317.03
8.0.30.0030.01717.19
8.0.20.0220.02417.23
8.0.10.0040.00417.07
8.0.00.0150.00617.03
7.4.330.0000.00513.11
7.4.320.0030.00316.62
7.4.300.0050.00216.74
7.4.290.0000.00816.68
7.4.280.0040.00416.56
7.4.270.0040.00416.78
7.4.260.0000.00513.37
7.4.250.0080.00216.64
7.4.240.0040.00416.54
7.4.230.0000.00816.59
7.4.220.0070.01116.61
7.4.210.0050.01216.72
7.4.200.0070.00016.77
7.4.190.0040.00416.59
7.4.160.0150.00316.68
7.4.150.0120.00616.58
7.4.140.0120.00616.70
7.4.130.0140.00616.71
7.4.120.0120.01016.64
7.4.110.0070.01416.91
7.4.100.0060.01216.91
7.4.90.0130.01216.63
7.4.80.0070.01016.80
7.4.70.0030.01416.66
7.4.60.0040.01816.59
7.4.50.0130.00016.64
7.4.40.0070.00716.71
7.4.30.0150.00016.69
7.4.00.0070.01115.27
7.3.330.0000.00613.60
7.3.320.0030.00313.51
7.3.310.0040.00416.39
7.3.300.0030.00316.52
7.3.290.0050.00916.51
7.3.280.0120.00716.56
7.3.270.0140.00316.46
7.3.260.0120.00816.46
7.3.250.0100.01016.58
7.3.240.0030.01316.54
7.3.230.0150.00716.53
7.3.210.0110.00616.48
7.3.200.0090.01219.39
7.3.190.0170.00016.54
7.3.180.0060.01116.61
7.3.170.0130.00316.45
7.3.160.0090.00916.41
7.3.120.0140.00014.68
7.2.330.0110.00616.43
7.2.320.0130.00616.58
7.2.310.0130.01416.56
7.2.300.0060.00916.82
7.2.290.0090.00916.64
7.2.60.0030.01016.64
7.2.00.0060.00919.19
7.1.200.0060.00615.79
7.1.100.0120.00418.03
7.1.70.0060.00917.06
7.1.60.0060.01919.40
7.1.50.0160.00916.77
7.1.00.0000.04322.54
7.0.200.0490.00614.54
7.0.140.0030.07021.99
7.0.100.0170.04020.16
7.0.90.0100.07720.16
7.0.80.0070.07320.14
7.0.70.0100.07720.00
7.0.60.0170.07720.07
7.0.50.0070.08320.47
7.0.40.0070.08020.05
7.0.30.0170.07320.11
7.0.20.0070.07020.04
7.0.10.0130.07320.17
7.0.00.0030.08720.18
5.6.280.0030.07320.96
5.6.250.0170.05720.67
5.6.240.0070.08020.63
5.6.230.0070.08320.80
5.6.220.0130.07320.78
5.6.210.0030.07020.73
5.6.200.0100.08321.04
5.6.190.0200.06321.16
5.6.180.0070.04321.01
5.6.170.0030.08721.11
5.6.160.0030.07721.09
5.6.150.0070.04321.09
5.6.140.0030.06721.10
5.6.130.0130.08021.12
5.6.120.0070.09321.02
5.6.110.0070.04021.15
5.6.100.0030.05321.02
5.6.90.0130.05021.18
5.6.80.0070.08320.49
5.6.70.0070.08320.55
5.6.60.0070.07020.57
5.6.50.0030.04720.41
5.6.40.0070.08020.52
5.6.30.0070.08020.38
5.6.20.0030.09020.45
5.6.10.0130.07320.48
5.6.00.0100.08020.42
5.5.380.0070.05320.48
5.5.370.0100.04720.52
5.5.360.0070.08020.43
5.5.350.0100.05020.55
5.5.340.0070.05721.02
5.5.330.0030.04320.98
5.5.320.0100.04720.99
5.5.310.0100.08320.87
5.5.300.0070.08320.84
5.5.290.0100.07720.82
5.5.280.0130.07321.00
5.5.270.0100.08320.95
5.5.260.0100.04320.89
5.5.250.0070.08320.52
5.5.240.0070.05020.40
5.5.230.0130.05320.34
5.5.220.0030.06320.35
5.5.210.0130.04020.33
5.5.200.0100.07320.20
5.5.190.0100.07320.16
5.5.180.0000.07720.05
5.5.160.0100.07320.31
5.5.150.0100.03320.25
5.5.140.0000.04320.34
5.5.130.0030.04320.27
5.5.120.0030.04320.06
5.5.110.0100.03320.14
5.5.100.0030.03720.15
5.5.90.0070.03720.21
5.5.80.0030.04720.16
5.5.70.0030.04019.98
5.5.60.0000.04320.12
5.5.50.0130.03020.18
5.5.40.0030.07720.18
5.5.30.0030.03720.12
5.5.20.0100.06020.07
5.5.10.0030.04020.17
5.5.00.0100.03020.09
5.4.450.0130.07319.46
5.4.440.0130.08019.45
5.4.430.0070.03719.36
5.4.420.0100.07719.47
5.4.410.0070.08019.25
5.4.400.0070.04718.96
5.4.390.0070.04719.13
5.4.380.0100.07019.09
5.4.370.0170.06319.23
5.4.360.0030.08018.96
5.4.350.0100.05019.06
5.4.340.0030.07018.95
5.4.320.0100.07319.04
5.4.310.0100.03318.92
5.4.300.0100.03319.22
5.4.290.0100.03719.11
5.4.280.0030.03719.09
5.4.270.0030.03319.18
5.4.260.0200.02019.04
5.4.250.0030.03319.04
5.4.240.0030.03718.95
5.4.230.0070.03719.05
5.4.220.0030.04019.18
5.4.210.0100.03019.21
5.4.200.0030.03719.05
5.4.190.0030.03719.15
5.4.180.0070.05718.84
5.4.170.0100.04019.11
5.4.160.0030.04019.14
5.4.150.0070.04019.08
5.4.140.0200.01716.46
5.4.130.0030.03716.50
5.4.120.0030.03716.47
5.4.110.0130.02316.56
5.4.100.0000.04316.39
5.4.90.0070.03316.55
5.4.80.0070.03316.39
5.4.70.0030.04016.52
5.4.60.0030.03716.38
5.4.50.0030.03716.45
5.4.40.0030.03016.41
5.4.30.0100.02716.39
5.4.20.0070.03316.46
5.4.10.0070.03316.42
5.4.00.0030.03315.96
5.3.290.0100.04314.84
5.3.280.0030.06314.84
5.3.270.0030.05014.84
5.3.260.0000.04014.84
5.3.250.0070.03714.84
5.3.240.0030.03714.84
5.3.230.0000.04014.84
5.3.220.0030.03714.84
5.3.210.0070.03314.84
5.3.200.0070.03314.84
5.3.190.0030.03714.84
5.3.180.0070.03314.84
5.3.170.0000.04314.84
5.3.160.0070.03314.84
5.3.150.0100.03314.84
5.3.140.0030.04014.84
5.3.130.0030.04014.84
5.3.120.0070.03014.84
5.3.110.0000.04014.84
5.3.100.0030.04314.84
5.3.90.0000.04014.84
5.3.80.0070.03314.84
5.3.70.0030.03714.84
5.3.60.0030.03714.84
5.3.50.0000.04014.84
5.3.40.0070.03014.84
5.3.30.0000.03714.84
5.3.20.0000.04014.84
5.3.10.0070.03014.84
5.3.00.0000.05014.84

preferences:
74.29 ms | 400 KiB | 5 Q