У меня есть система, которая сравнивает финансовый год до текущей даты с тем же диапазоном дат предыдущего года. Вы можете настроить год и месяц для просмотра, и он всегда сравнивает один и тот же диапазон дат с предыдущим годом. Я установил его так, что если текущий день является високосным, он сравнивается с 28-м годом ранее, а если прошлый год был високосным, а сегодня 28 февраля, он сравнивается с прошлым годом до 29-го. если вы посмотрите на месяц, отличный от текущего, он будет отображаться до последнего дня этого месяца, в противном случае - до текущей даты.
Хорошо, сейчас все работает нормально, но теперь мои работодатели не хотят, чтобы это было до текущей даты, они хотят, чтобы это было до вчерашней даты. Как я могу это сделать, мои основные проблемы заключаются в том, что если сегодня 1-е число месяца, или что, если сегодня первый день финансового года.
Вот код, который у меня сейчас есть:
function create_YTD_XML()
{
global $month;
global $year;
$last_year = $year - 1;
if($year == date('Y') && $month == date('m'))
{
$this_day = date('d');
}
else
{
$this_day = date('t', mktime(0, 0, 0, $month, 1, $year)); // LAST DAY OF MONTH
}
if(is_leap_year($year) && $this_day == 29)
{
$last_day = 28;
}
else if(is_leap_year($last_year) && $this_day == 28)
{
$last_day = 29;
}
else
{
$last_day = $this_day;
}
if($month >= 2)
{
$this_year_start = $year;
$last_year_start = $last_year;
}
else
{
$this_year_start = $year - 1;
$last_year_start = $last_year - 1;
}
$this_ytd_start = $this_year_start.'-02-01';
$last_ytd_start = $last_year_start.'-02-01';
$this_ytd_end = $year.'-'.str_pad($month, 2, "0", STR_PAD_LEFT).'-'.$this_day;
$last_ytd_end = $last_year.'-'.str_pad($month, 2, "0", STR_PAD_LEFT).'-'.$last_day;
}
Какое будет лучшее решение?
Спасибо!