A small function to return a date range based on a plain-English text description eg last week
//***** FUNCTION TO RETURN THE DATES FOR A GIVEN DATE RANGE IN MYSQL AND UK FORMAT *****
/**
USAGE:
$arr_dates = date_range("last month);
EXAMPLE OUTPUT:
Array
(
[date_from] => Array
(
[mysql] => 2011-03-01
[uk] => 01/03/2011
[text_long] => Thursday 31st March 2011
[text_short] => 31 Mar 2011
)
[date_to] => Array
(
[mysql] => 2011-03-31
[uk] => 31/03/2011
[text_long] => Thursday 31st March 2011
[text_short] => 31 Mar 2011
)
[description] => Array
(
[range] => last month
[description] => March 2011
)
)
*/
function date_range($period){
$arr_allowed_date_ranges = array("yesterday", "this week", "last week", "this month", "last month", "this year", "last year", "all");
if(!in_array($period, $arr_allowed_date_ranges)) return FALSE;
//***** YESTERDAY *****
if($period == "yesterday"){
$mysql_date_from = $mysql_date_to = date("Y-m-d", mktime("0", "0", "0", date("m"), date("d")-1, date("Y")));
$description = "Yesterday";
//***** THIS WEEK *****
}elseif($period == "this week"){
$week = date("W");
$i = 0;
while(date('W', strtotime("-$i day")) >= $week) {
$mysql_date_from = date('Y-m-d', strtotime("-$i day"));
$i++;
}
$mysql_date_from = date('Y-m-d', strtotime("-$i day"));
list($yr, $mo, $da) = explode('-', $mysql_date_from);
$mysql_date_to = date('Y-m-d', mktime(0, 0, 0, $mo, $da + 6, $yr));
$description = "This Week";
//***** LAST WEEK *****
}elseif($period == "last week"){
$week = date("W") - 1;
$i = 0;
while(date('W', strtotime("-$i day")) >= $week) {
$mysql_date_from = date('Y-m-d', strtotime("-$i day"));
$i++;
}
$mysql_date_from = date('Y-m-d', strtotime("-$i day"));
list($yr, $mo, $da) = explode('-', $mysql_date_from);
$mysql_date_to = date('Y-m-d', mktime(0, 0, 0, $mo, $da + 6, $yr));
$description = "Last Week";
//***** THIS MONTH *****
}elseif($period == "this month"){
$mysql_date_from = date("Y-m-d", mktime("0", "0", "0", date("m"), "1", date("Y")));
$mysql_date_to = date("Y-m-d");
$description = date("F Y", mktime("0", "0", "0", date("m"), "1", date("Y")));
//***** LAST MONTH *****
}elseif($period == "last month"){
$mysql_date_from = date("Y-m-d", mktime("0", "0", "0", date("m")-1, "1", date("Y")));
$mysql_date_to = date("Y-m-d", mktime("0", "0", "0", date("m"), date("t", mktime("0", "0", "0", date("m")-1), "1", date("Y")), date("Y")));
$description = date("F Y", mktime("0", "0", "0", date("m")-1, "1", date("Y")));
//***** THIS YEAR *****
}elseif($period == "this year"){
$mysql_date_from = date("Y-m-d", mktime("0", "0", "0", "1", "1", date("Y")));
$mysql_date_to = date("Y-m-d");
$description = date("Y");
//***** LAST YEAR *****
}elseif($period == "last year"){
$mysql_date_from = date("Y-m-d", mktime("0", "0", "0", "1", "1", date("Y")-1));
$mysql_date_to = date("Y-m-d", mktime("0", "0", "0", "12", "31", date("Y")-1));
$description = date("Y", mktime("0", "0", "0", "12", "31", date("Y")-1));
}
if($mysql_date_from && $mysql_date_to){
//***** FORMAT DATE RANGES IN UK FORMAT *****
list($y,$m,$d) = explode("-", $mysql_date_from);
$uk_date_from = "$d/$m/$y";
list($y,$m,$d) = explode("-", $mysql_date_to);
$uk_date_to = "$d/$m/$y";
//***** FORMAT DATE RANGES IN LONGHAND FORMAT *****
$text_long_date_from = date("l jS F Y", mktime("0", "0", "0", $m, $d, $y));
$text_long_date_to = date("l jS F Y", mktime("0", "0", "0", $m, $d, $y));
//***** FORMAT DATE RANGES IN SHORTHAND FORMAT *****
$text_short_date_from = date("d M Y", mktime("0", "0", "0", $m, $d, $y));
$text_short_date_to = date("d M Y", mktime("0", "0", "0", $m, $d, $y));
//***** BUILD THE ARRAY *****
$arr_date_ranges = array("date_from" => array("mysql" => $mysql_date_from,
"uk" => $uk_date_from,
"text_long" => $text_long_date_from,
"text_short" => $text_short_date_from
),
"date_to" => array("mysql" => $mysql_date_to,
"uk" => $uk_date_to,
"text_long" => $text_long_date_to,
"text_short" => $text_short_date_to
),
"description" => array("range" => $period,
"description" => $description
)
);
}else{
$arr_date_ranges = array();
}
return $arr_date_ranges;
}


![Subscribe to [serpents kiss dot com]](http://www.serpentskiss.com/wordpress/wp-content/themes/black-hat/images/rss_feed.gif)
