Каково максимальное количество рабочих дней через год? Как Вы кодировали бы его?

Альтернативы:

  1. Используйте CTE, как показано в ответах на ваш предыдущий вопрос.
  2. Извлеките все результаты в ваше приложение и вычисляйте значения постепенно, используя код, а не SQL.
6
задан Phil H 27 March 2009 в 10:50
поделиться

5 ответов

Максимальное количество дней через год 366, это дает нам 52 целых недели. За те 52 недели существуют по крайней мере 52 * 5 = 260 рабочих дней.

Нас оставляют с 2 днями (52 * 7 = 364), возможно, что эти 2 дня являются рабочими днями.

Таким образом, максимальное количество рабочих дней через год 262.

23
ответ дан 8 December 2019 в 02:18
поделиться

Первая вещь помнить состоит в том, что существует только 14 возможных шаблонов дней через год: два в течение каждого дня недели (один в течение високосного года, один в течение невисокосного года).

Вторая вещь помнить состоит в том, что первые 364 дня года не важны, потому что это является кратным 7 (и таким образом существует 5 x 52 = 260 рабочих дней за первые 364 дня всегда).

Таким образом, Вы только заботитесь о прошлых 1-2 днях.

Они могут оба быть рабочими днями, таким образом, ответ на вопрос 262.

Если Вы хотите, чтобы алгоритм FAST разработал число рабочих дней в любом данном году, просто необходимо придумать формулу, которая превращает год в правильный шаблон года. Этому нельзя слишком трудно дать это, високосные годы предсказуемы.

11
ответ дан 8 December 2019 в 02:18
поделиться

Ответы cletus и GvS математически корректны, но я задаюсь вопросом, делаете ли Вы слишком много усилия. Если просто необходимо удостовериться, что массив является достаточно большим, вычислите с 53 неделями с 5 рабочими днями, следовательно 265 днями. Так как год всегда равняется 52 и, дробные недели долго, просто окружив к следующему полному целому числу будут всегда давать Вам достаточно элементов.

Если Ваши элементы массива не являются чрезвычайно большими в потреблении памяти, можно жить с небольшим количеством отходов из-за элементов, что Вы никогда не будете использоваться. Достаточно хороший достаточно хорошо.

И Вы сохраните по крайней мере 10 минут, разрабатывая точное решение (хорошо, это - то, в чем я, вероятно, нуждался бы, по крайней мере, ;-) который можно потратить кодирование.

5
ответ дан 8 December 2019 в 02:18
поделиться

Вот то, как Вы могли вычислить точную сумму недельных дней в конкретном году с помощью C# (Платформа.NET):

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // in which year which should count week days
            var year = DateTime.Now.Year;

            // first day of this year
            var date = new DateTime(year, 1, 1);

            var count = 0;

            // if date is still within our year, proceed
            while (date.Year < year + 1)
            {
                if (date.DayOfWeek == DayOfWeek.Monday ||
                    date.DayOfWeek == DayOfWeek.Tuesday ||
                    date.DayOfWeek == DayOfWeek.Wednesday ||
                    date.DayOfWeek == DayOfWeek.Thursday ||
                    date.DayOfWeek == DayOfWeek.Friday)
                {
                    count++;
                }
                date.AddDays(1);
            }

            Console.Write(count);
        }
    }
}
0
ответ дан 8 December 2019 в 02:18
поделиться

Согласно данным этого сайта

http://kalender-365.de/weekdays.php

с 1 февраля 2012 г. по 1 февраля 2013 г. насчитывается 263 рабочих дня, что превышает максимальное значение, указанное выше в 262.

2
ответ дан 8 December 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: