Как найти пятницу тринадцатое в C#

Код сначала очищает результат ListBox. Затем он получает даты начала и окончания и использует их для получения номеров начала и конца года.

Далее программа выполняет цикл между начальным и конечным годами включительно. За каждый год код перебирается через месяц с номерами от 1 до 12. Для каждого месяца код создает объект DateTime, представляющий 13-е число месяца в данном году.

Если дата предшествует выбранной дате начала, код использует оператор continue, чтобы пропустить оставшуюся часть цикла месяца и продолжить со следующего месяца. Это может произойти до 11 раз (если начальный месяц - декабрь).

Если дата указана после конечной даты, код использует инструкцию break для выхода из цикла месяца. Это происходит не один раз в течение последнего года, поэтому цикл года также заканчивается в этот момент. (Это не произойдет вообще, если конечный месяц - декабрь.)

Наконец, если код все еще запущен в цикле, он проверяет свойство DayOfWeek даты тестирования, и добавляет его в результат ListBox, если это пятница.

Эта программа довольно проста (и, возможно, не очень полезна для бизнес-приложений), но демонстрирует два важных метода.

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

В этом примере предположим, что время, выбранное dtpStart, - пятница 13 июня 2014 года в 13:30:00. Когда код повторяется через месяцы, код учитывает дату 13 июня 2014 года, но когда вы инициализируете объект DateTime, время опускается, поэтому по умолчанию оно равно 00:00:00. test_date & gt; end_date считает, что дата теста перед датой начала 13:30:00, поэтому она пропускает эту дату.

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

Источник: http://csharphelper.com/blog/2017/08/find-friday-the-thirteenths-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *