Математический расчет графика финансового года 5-4-4 - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь рассчитать финансовый год и вернуть дату окончания недели в графике 5-4-4.

Например, финансовый год начинается 1 января, затем я верну дату 5недели, 4 недели и еще 4 недели.Затем повторите 5 недель, 4 недели, 4 недели до конца финансового года, а затем, вероятно, перезапустите его снова.

Как бы вы поступили математически или программно?

Я пришелс методом вычитания, но хотел посмотреть, есть ли у кого-нибудь лучшее решение:

52 - 47 = 5    | February 5th, 2018
52 - 43 = 9    | March 5th, 2018
52 - 39 = 13   | April 2nd, 2018
52 - 34 = 18   | May 7th, 2018
52 - 30 = 22   | June 4th, 2018
52 - 26 = 26   | July 3rd, 2018
52 - 21 = 31   | August 7th, 2018
52 - 17 = 35   | September 4th, 2018
52 - 13 = 39   | October 2nd, 2018
52 - 8  = 44   | November 6th, 2018
52 - 4  = 48   | December 4th, 2018
52 - 0  = 52   | January 1st, 2019

1 Ответ

0 голосов
/ 28 сентября 2018

Закончил решение проблемы сам.Не удалось найти что-либо в Интернете.

Решение: Мой алгоритм в итоге использовал вычитание в конце, но измененным способом из моего вопроса.

int[] pattern = {5, 4, 4}; // The week pattern
DateTime begin = new DateTime(2018, 1, 1);
DateTime currentDate = DateTime.Today; // 9-27-2018

// Get the total amount of weeks between the 2 days.  Add 1 for including the end day
var currentWeek = (currentDate.Date.Subtract(beginTime).TotalDays + 1) / 7;
var counter = 0;
while (currentWeek > 0)
{
    if (counter > 2)
    {
        counter = 0;
    }
    currentWeek = currentWeek - pattern[counter];
}    
return currentWeek == 0;

Затем возвращается логическое значениетекущая дата - конец периода времени в расписании 5-4-4.В этом случае он вернул бы ложную причину 9-27-2018 - это не день в конце периода в финансовом календаре с шаблоном 5-4-4.

...