Учет високосного года при сравнении годовой выручки

Я пишу программу, которая показывает текущие продажи за период с начала финансового года до текущей даты по сравнению с тем же диапазоном дат предыдущего года.

Мой вопрос: какие усилия мне нужно предпринять для високосного года?

ОБНОВИТЬ:

Хорошо, они хотят, как я сказал (сравните прошлый год с той же датой), но если сегодня не високосный год, а прошлый год и сегодня 28 февраля, то по сравнению с прошлым годом до 29-го. Или, если сегодня 29 февраля, сравните с прошлым годом до 28 числа.

4 ответа

Решение

Конечно, это зависит от того, что бизнес хочет, чтобы вы делали. Разве это не вопрос, на который должен ответить бухгалтер?

Это кажется мне деловым решением. В зависимости от типа бизнеса этот дополнительный день может не иметь значения. В противном случае, я полагаю, вы можете рассматривать это как "первые n дней в году", а не как "с 1 января по X".

Вот идея, но, как и другие говорили, она может быть основана на вашем конкретном домене.

  1. Рассмотрим 1 "нормализованный" год = 365,242199 дней с учетом всех скачков (говорит Google)
  2. Рассчитайте средние продажи за день в вашем году на основе реального количества дней в этом году
  3. Увеличьте или уменьшите объем продаж за 365,242199 дней

Так например

   2007 = $4000 in sales.
   There's 365 days in 2007, so avg sale per day = $10.96
   Multpiplying times num days in a normalized year (365.242199) 
      gives you $4003.05 normalized sales

Вы можете сравнить это непосредственно с аналогичным расчетом за 2008 год,

   2008 = $5000 in sales.
   There's 366 days in 2008, so avg sale per day = $13.66
   Multpiplying times num days in a normalized year (365.242199) 
      gives you $4975.655 normalized sales for 2008!

Вы можете уменьшить значения високосного года, чтобы учесть дополнительный день.

Поэтому, если вы сравните, скажем, 1 сентября обычного года с 1 сентября високосного года, вы сделаете:

if(year == leapyear && day > 28Feb)
    Convert date to dayOfYear
    leapYearValue *= dayOfYear / (dayOfYear + 1)

Это действительно должно быть в спецификации, хотя.

Другие вопросы по тегам