Я думаю, что ваша лучшая ставка - класс dateTime.
http://us3.php.net/manual/en/class.datetime.php
Я думаю, что-то вроде этого вам понадобится
public function getCurrentYear(DateTime $dateToCheck)
{
$today = new DateTime();
$currentYear = (int)$today->format('Y');
$endFiscalYear = new DateTime('31 July'); //year left out, so will default to this year
if($dateToCheck < $endFiscalYear){ //you need PHP >= 5.2.2 for this to work
$currentYear--;
}
return $currentYear;
}
Вы можете установить $ сегодня, выполнив что-то вроде: -
$today = new DateTime('20 June 2011');
Подробнее в ссылке выше
Вот немного другая версия, которая должна быть немного более надежной, поскольку она будет возвращать финансовый год любой даты, которую вы ей даете, а не только даты в текущем году.
function getFiscalYear(DateTime $dateToCheck)
{
$fiscalYearEnd = '31 July';
$year = (int)$dateToCheck->format('Y');
$fiscalyearEndDate = new DateTime($fiscalYearEnd . ' ' . $year);
if($dateToCheck <= $fiscalyearEndDate){
$year--;
}
return $year;
}
используйте это так: -
$dateToCheck = new DateTime('1 jan 2009'); // for example
$fiscalYear = getFiscalYear($dateToCheck);
Это вернется 2008
Эта версия должна работать, если ваша версия PHP <5.2 </p>
function getFiscalYear($timestamp)
{
$year = (int)date('Y', $timestamp);
$fiscalYearEndDate = strtotime('31 July ' . $year);
if($timestamp < $fiscalYearEndDate) $year--;
return $year;
}
Используйте вот так: -
$date = strtotime('1 Jan 2009');
fiscalYear = getFiscalYear($date);
вернется 2008