note 110203 deleted from function.strtotime by aharvey
| From: | aharvey@php.net | Date: | Mon, 29 Oct 2012 02:02:51 +0000 |
| Subject: | note 110203 deleted from function.strtotime by aharvey | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-191572@lists.php.net to get a copy of this message | ||
Note Submitter: Anonymous
----
The function of milespickens at gmail dot com calculating quarters dates needs a small fix, in order
to work properly at the last day of the quarter, for example 30th September. At the moment it
returns null without this fix:
<?php
function get_quarter( $minus = NULL )
{
//put correct begin dates and end dates in Bingo array
$bingo = array();
$quarters = array(
1 => array( '01/01/', '03/31/'),
2 => array( '04/01/', '06/30/'),
3 => array( '07/01/', '09/30/'),
4 => array( '10/01/', '12/31/')
);
if( $minus )
{
$adjust = 3 * $minus;
$today = strtotime($adjust . " months", time());
}
else
{
$today = time();
}
$year = date("Y", $today);
foreach($quarters as $key => $val)
{
$date1 = strtotime($val[0] . $year);
$date2 = strtotime($val[1] . $year);
$date2 += (24*60*60); // Add this line to correct timestamp for last day of the quarter
if( ($today > $date1) && ($today < $date2))
{
$bingo[] = $quarters[$key][0] . $year;
$bingo[] = $quarters[$key][1] . $year;
}
}
return $bingo;
}
$this_quarter = get_quarter( NULL );
$last_quarter = get_quarter( -1 );
$next_quarter = get_quarter( 1 );
var_dump($this_quarter);
var_dump($last_quarter);
var_dump($next_quarter);
?>
We need to add 24 hours for the end date timestamp before compare:
$date2 += (24*60*60); // Add this line to correct timestamp for last day of the quarter