Skip to content

Instantly share code, notes, and snippets.

@brianlmoon
Created January 16, 2012 18:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brianlmoon/1622095 to your computer and use it in GitHub Desktop.
Save brianlmoon/1622095 to your computer and use it in GitHub Desktop.
Given two timestamps and a integer, returns the Y-m-d range, separated by days of that integer
<?php
/**
* Given two timestamps and a integer, returns the Y-m-d range, separated by days
* of that integer
*
* @param int $start_ts Starting timestamp
* @param int $end_ts Ending timestamp
* @return array
*
* @test
* $mydates = DateFormat::get_date_ranges(strtotime("2010-03-14"),strtotime("2010-03-29"),10);
* echo json_encode($mydates);
* @expects
* [["2010-03-14","2010-03-23"],["2010-03-24","2010-03-29"]]
* @end
*
*/
public static function get_date_ranges($start_ts, $end_ts, $days_per_range) {
$date_ranges = array();
$end_ts += 8600;
$days = $days_per_range - 1;
for($real_start_ts = $start_ts; $real_start_ts <= $end_ts; $real_start_ts += (86400 * $days_per_range)) {
$real_end_ts = strtotime(date("Y-m-d", $real_start_ts) . " + $days days");
if($real_end_ts - $end_ts >= 0) {
$real_end_ts = $end_ts;
}
$date_ranges[] = array(date("Y-m-d", $real_start_ts), date("Y-m-d", $real_end_ts));
}
return $date_ranges;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment