Учет високосного года при сравнении продаж из года в год

StackOverflow https://stackoverflow.com/questions/610752

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

Обновить:

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

Это было полезно?

Решение

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

Другие советы

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

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

  1. Рассмотрим 1 "нормализованный" год = 365,242199 дней, считая все данные leap (говорит 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)

Однако это действительно должно быть в спецификации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top