I am trying to set a start date and end date by the quarter.
For example, I am working on a reporting system where i need to report data for quarter 1, quarter 2, qu
Simple example:
define('DATE_FORMAT', 'Y-m-d');
function get_start_and_end_date($case) {
$start = 'first day of ';
$end = 'last day of ';
if ($case == 'this_quarter') {
$case = 'quarter_' . ceil((new DateTime)->format('n') / 3);
}
switch ($case) {
case 'prev_month' : $start .= 'previous month'; $end .= 'previous month'; break;
default :
case 'this_month' : $start .= 'this month'; $end .= 'this month'; break;
case 'next_month' : $start .= 'next month'; $end .= 'next month'; break;
case 'first_quarter' :
case 'quarter_1' : $start .= 'January'; $end .= 'March'; break;
case 'quarter_2' : $start .= 'April'; $end .= 'June'; break;
case 'quarter_3' : $start .= 'July'; $end .= 'September'; break;
case 'last_quarter' :
case 'quarter_4' : $start .= 'October'; $end .= 'December'; break;
}
return [
'start' => (new DateTime($start))->format(DATE_FORMAT),
'end' => (new DateTime($end))->format(DATE_FORMAT),
];
}
demo