Ninjakreborn Posted January 15, 2008 Share Posted January 15, 2008 How do I get a series of date ranges by a start date and end date. For example Start Date - 02/14/06 End Date - 05/04/08 I need to take that start date and end date, then generate an array that has every month in between. Array[1] - 2-14-06 Array[2] - 3-14-06 Array[3] - 4-14-06 All the way up until the end date. However the start date and end date can be however far about it wants, and I need to be able to accurately grab the date ranges. If possible I need to be able to also count how many ranges there are too. If you can help I would be greatly appreciative. Link to comment https://forums.phpfreaks.com/topic/86144-solved-date-ranges/ Share on other sites More sharing options...
Ninjakreborn Posted January 15, 2008 Author Share Posted January 15, 2008 I have created the following function but it doesn't have the exact affect, but it's as close as I have gotten so far. // get dates into start and end $startdate = $prod_codes[0]['award_date']; $enddate = $prod_codes[0]['end_of_term']; $range = array(); // empty array to trap ranges if (is_string($startdate) === true) { $start = strtotime($startdate); } if (is_string($enddate) === true ) { $end = strtotime($enddate); } if ($start > $end) return createDateRangeArray($end, $start); do { $range[] = date('Y-m-d', $start); $start = strtotime("+ 1 day", $start); } while($start < $end); pr($range); This creates an array and output's it, but not creating it like I want. Here is the array result. Array ( [0] => 2004-01-01 [1] => 2004-01-02 [2] => 2004-01-03 [3] => 2004-01-04 [4] => 2004-01-05 [5] => 2004-01-06 [6] => 2004-01-07 [7] => 2004-01-08 [8] => 2004-01-09 [9] => 2004-01-10 [10] => 2004-01-11 [11] => 2004-01-12 [12] => 2004-01-13 [13] => 2004-01-14 [14] => 2004-01-15 [15] => 2004-01-16 [16] => 2004-01-17 [17] => 2004-01-18 [18] => 2004-01-19 [19] => 2004-01-20 [20] => 2004-01-21 [21] => 2004-01-22 [22] => 2004-01-23 [23] => 2004-01-24 [24] => 2004-01-25 [25] => 2004-01-26 [26] => 2004-01-27 [27] => 2004-01-28 [28] => 2004-01-29 [29] => 2004-01-30 [30] => 2004-01-31 [31] => 2004-02-01 [32] => 2004-02-02 [33] => 2004-02-03 [34] => 2004-02-04 [35] => 2004-02-05 [36] => 2004-02-06 [37] => 2004-02-07 [38] => 2004-02-08 [39] => 2004-02-09 [40] => 2004-02-10 [41] => 2004-02-11 [42] => 2004-02-12 [43] => 2004-02-13 [44] => 2004-02-14 [45] => 2004-02-15 [46] => 2004-02-16 [47] => 2004-02-17 [48] => 2004-02-18 [49] => 2004-02-19 [50] => 2004-02-20 [51] => 2004-02-21 [52] => 2004-02-22 [53] => 2004-02-23 [54] => 2004-02-24 [55] => 2004-02-25 [56] => 2004-02-26 [57] => 2004-02-27 [58] => 2004-02-28 [59] => 2004-02-29 [60] => 2004-03-01 [61] => 2004-03-02 [62] => 2004-03-03 [63] => 2004-03-04 [64] => 2004-03-05 [65] => 2004-03-06 [66] => 2004-03-07 [67] => 2004-03-08 [68] => 2004-03-09 [69] => 2004-03-10 [70] => 2004-03-11 [71] => 2004-03-12 [72] => 2004-03-13 [73] => 2004-03-14 [74] => 2004-03-15 [75] => 2004-03-16 [76] => 2004-03-17 [77] => 2004-03-18 [78] => 2004-03-19 [79] => 2004-03-20 [80] => 2004-03-21 [81] => 2004-03-22 [82] => 2004-03-23 [83] => 2004-03-24 [84] => 2004-03-25 [85] => 2004-03-26 [86] => 2004-03-27 [87] => 2004-03-28 [88] => 2004-03-29 [89] => 2004-03-30 [90] => 2004-03-31 [91] => 2004-04-01 [92] => 2004-04-02 [93] => 2004-04-03 [94] => 2004-04-04 [95] => 2004-04-05 [96] => 2004-04-06 [97] => 2004-04-07 [98] => 2004-04-08 [99] => 2004-04-09 [100] => 2004-04-10 [101] => 2004-04-11 [102] => 2004-04-12 [103] => 2004-04-13 [104] => 2004-04-14 [105] => 2004-04-15 [106] => 2004-04-16 [107] => 2004-04-17 [108] => 2004-04-18 [109] => 2004-04-19 [110] => 2004-04-20 [111] => 2004-04-21 [112] => 2004-04-22 [113] => 2004-04-23 [114] => 2004-04-24 [115] => 2004-04-25 [116] => 2004-04-26 [117] => 2004-04-27 [118] => 2004-04-28 [119] => 2004-04-29 [120] => 2004-04-30 [121] => 2004-05-01 [122] => 2004-05-02 [123] => 2004-05-03 [124] => 2004-05-04 There are over 500 in that array but you can get the point. It's creating an array using the "DAY" as what to create by. I need it to do the SAME theory it is using now except instead of using the DAY to make the range, it would use the month, for example. 01-05-07 02-05-07 03-05-07 Just as an example, to do it by month, instead of by day. Any advice on what I can do to this function to make it do what I am wanting it to do? Link to comment https://forums.phpfreaks.com/topic/86144-solved-date-ranges/#findComment-439978 Share on other sites More sharing options...
Ninjakreborn Posted January 15, 2008 Author Share Posted January 15, 2008 Oh, I figured it out. I changed the +1 day to +1 month. Link to comment https://forums.phpfreaks.com/topic/86144-solved-date-ranges/#findComment-439982 Share on other sites More sharing options...
kenrbnsn Posted January 15, 2008 Share Posted January 15, 2008 Here's my take: <?php $start_date = $_GET['start']; $end_date = $_GET['end']; $tst = strtotime($start_date); $end = strtotime($end_date); $dr = array(); while ($tst <= $end) { $dr[] = date('Y-m-d',$tst); $tst = strtotime('+1 month',$tst); } echo '<pre>' . print_r($dr,true) . '</pre>'; ?> Ken Link to comment https://forums.phpfreaks.com/topic/86144-solved-date-ranges/#findComment-439999 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.