@ 2014-02-06T20:55:20Z <?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'), time());
$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');
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
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).
Version System time (s) User time (s) Memory (MiB) 7.3.1 0.009 0.006 16.75 7.3.0 0.004 0.004 16.71 7.2.13 0.006 0.003 17.13 7.2.12 0.000 0.013 17.05 7.2.11 0.006 0.006 16.82 7.2.10 0.004 0.008 16.88 7.2.9 0.000 0.015 17.13 7.2.8 0.009 0.006 17.18 7.2.7 0.004 0.007 17.18 7.2.6 0.005 0.010 17.01 7.2.5 0.003 0.014 17.26 7.2.4 0.004 0.008 17.10 7.2.3 0.008 0.008 17.28 7.2.2 0.008 0.003 16.88 7.2.1 0.006 0.003 17.09 7.2.0 0.009 0.005 18.48 7.1.25 0.003 0.009 15.88 7.1.20 0.004 0.011 15.79 7.1.10 0.006 0.006 18.29 7.1.7 0.004 0.004 17.27 7.1.6 0.007 0.017 19.40 7.1.5 0.000 0.015 17.03 7.1.0 0.000 0.043 22.46 7.0.20 0.003 0.006 17.06 7.0.14 0.007 0.070 22.10 7.0.10 0.007 0.047 20.18 7.0.9 0.003 0.037 20.13 7.0.8 0.007 0.040 20.13 7.0.7 0.003 0.070 20.10 7.0.6 0.010 0.047 20.13 7.0.5 0.007 0.083 20.43 7.0.4 0.020 0.073 20.05 7.0.3 0.000 0.083 20.07 7.0.2 0.007 0.083 20.14 7.0.1 0.000 0.070 20.04 7.0.0 0.010 0.070 20.18 5.6.28 0.007 0.073 21.17 5.6.25 0.013 0.033 20.85 5.6.24 0.010 0.037 20.71 5.6.23 0.000 0.040 20.67 5.6.22 0.007 0.073 20.81 5.6.21 0.000 0.043 20.72 5.6.20 0.003 0.077 21.12 5.6.19 0.003 0.080 21.11 5.6.18 0.013 0.080 21.05 5.6.17 0.003 0.090 21.21 5.6.16 0.007 0.087 20.98 5.6.15 0.007 0.043 21.12 5.6.14 0.007 0.043 21.24 5.6.13 0.010 0.087 20.98 5.6.12 0.010 0.047 21.03 5.6.11 0.003 0.067 21.01 5.6.10 0.010 0.083 20.99 5.6.9 0.023 0.070 21.13 5.6.8 0.010 0.067 20.59 5.6.7 0.000 0.050 20.53 5.6.6 0.003 0.073 20.40 5.6.5 0.010 0.080 20.41 5.6.4 0.003 0.043 20.46 5.6.3 0.003 0.040 20.51 5.6.2 0.010 0.070 20.41 5.6.1 0.017 0.040 20.44 5.6.0 0.007 0.067 20.45 5.5.38 0.003 0.040 20.48 5.5.37 0.007 0.040 20.46 5.5.36 0.007 0.050 20.61 5.5.35 0.000 0.067 20.40 5.5.34 0.003 0.080 20.80 5.5.33 0.003 0.043 20.90 5.5.32 0.010 0.040 20.91 5.5.31 0.007 0.080 20.89 5.5.30 0.017 0.050 20.82 5.5.29 0.003 0.090 20.99 5.5.28 0.003 0.077 20.86 5.5.27 0.003 0.050 20.86 5.5.26 0.007 0.070 20.99 5.5.25 0.003 0.080 20.80 5.5.24 0.007 0.047 20.34 5.5.23 0.003 0.067 20.28 5.5.22 0.010 0.047 20.25 5.5.21 0.003 0.080 20.32 5.5.20 0.000 0.043 20.34 5.5.19 0.010 0.077 20.23 5.5.18 0.013 0.073 20.22 5.5.16 0.013 0.070 20.35 5.5.15 0.013 0.073 20.24 5.5.14 0.007 0.040 20.19 5.5.13 0.010 0.067 20.34 5.5.12 0.003 0.047 20.34 5.5.11 0.010 0.067 20.05 5.5.10 0.003 0.077 20.17 5.5.9 0.007 0.077 20.16 5.5.8 0.010 0.043 20.14 5.5.7 0.003 0.063 20.16 5.5.6 0.017 0.067 20.16 5.5.5 0.003 0.080 20.13 5.5.4 0.003 0.080 20.12 5.5.3 0.010 0.047 20.14 5.5.2 0.013 0.057 20.11 5.5.1 0.013 0.067 20.16 5.5.0 0.010 0.070 20.18 5.4.45 0.010 0.063 19.54 5.4.44 0.017 0.047 19.45 5.4.43 0.013 0.063 19.46 5.4.42 0.013 0.040 19.46 5.4.41 0.013 0.073 19.25 5.4.40 0.007 0.043 19.22 5.4.39 0.013 0.070 19.14 5.4.38 0.010 0.077 19.03 5.4.37 0.007 0.047 18.89 5.4.36 0.000 0.043 18.89 5.4.35 0.000 0.043 19.14 5.4.34 0.010 0.050 19.04 5.4.32 0.017 0.060 18.89 5.4.31 0.003 0.040 19.04 5.4.30 0.003 0.040 19.16 5.4.29 0.007 0.043 19.16 5.4.28 0.007 0.043 19.05 5.4.27 0.010 0.040 19.18 5.4.26 0.007 0.070 19.13 5.4.25 0.003 0.083 19.11 5.4.24 0.003 0.083 19.04 5.4.23 0.007 0.077 19.03 5.4.22 0.003 0.047 18.95 5.4.21 0.007 0.053 19.04 5.4.20 0.003 0.067 18.94 5.4.19 0.003 0.053 18.94 5.4.18 0.000 0.047 18.91 5.4.17 0.000 0.050 19.24 5.4.16 0.007 0.080 19.19 5.4.15 0.013 0.063 19.11 5.4.14 0.000 0.073 16.39 5.4.13 0.017 0.063 16.46 5.4.12 0.007 0.043 16.48 5.4.11 0.010 0.067 16.48 5.4.10 0.003 0.070 16.40 5.4.9 0.007 0.040 16.48 5.4.8 0.007 0.040 16.42 5.4.7 0.000 0.063 16.50 5.4.6 0.007 0.073 16.48 5.4.5 0.013 0.050 16.54 5.4.4 0.007 0.077 16.47 5.4.3 0.007 0.057 16.45 5.4.2 0.003 0.047 16.46 5.4.1 0.010 0.067 16.45 5.4.0 0.000 0.047 15.91 5.3.29 0.007 0.073 14.74 5.3.28 0.007 0.073 14.77 5.3.27 0.000 0.073 14.71 5.3.26 0.007 0.057 14.71 5.3.25 0.003 0.053 14.62 5.3.24 0.010 0.073 14.80 5.3.23 0.010 0.073 14.70 5.3.22 0.017 0.073 14.71 5.3.21 0.000 0.050 14.60 5.3.20 0.003 0.047 14.64 5.3.19 0.010 0.063 14.60 5.3.18 0.007 0.050 14.71 5.3.17 0.007 0.070 14.61 5.3.16 0.007 0.077 14.70 5.3.15 0.017 0.037 14.60 5.3.14 0.010 0.037 14.68 5.3.13 0.010 0.073 14.52 5.3.12 0.010 0.057 14.56 5.3.11 0.017 0.033 14.70 5.3.10 0.003 0.043 14.20 5.3.9 0.010 0.060 14.12 5.3.8 0.007 0.070 14.20 5.3.7 0.003 0.070 14.08 5.3.6 0.007 0.070 14.00 5.3.5 0.000 0.077 14.01 5.3.4 0.000 0.080 13.95 5.3.3 0.000 0.047 14.02 5.3.2 0.010 0.067 13.80 5.3.1 0.010 0.043 13.79 5.3.0 0.007 0.070 13.61
preferences:dark mode live preview
35.91 ms | 401 KiB | 5 Q