Member 14414219 Ответов: 3

Как я могу получить количество дней в указанном месяце C#


Как бы я создал фрагмент кода, который просит пользователя ввести число, представляющее месяц (январь=1, февраль=2 и т. д.), и выводит месяц и количество дней в этом месяце. а также получить количество дней в месяце, если это високосный год, выполнив следующие действия
1. Если год равномерно делится на 4, перейдите к шагу 2. ...
2. Если год равномерно делится на 100, перейдите к шагу 3. ...
3. Если год равномерно делится на 400, перейдите к шагу 4. ...
4. год является високосным (в нем 366 дней).
5. Кроме того, год не является високосным (он имеет 365 дней).

Что я уже пробовал:

помощь будет очень признательна спасибо

3 Ответов

Рейтинг:
2

OriginalGriff

Во-первых, вам нужно заставить пользователя ввести год, а также месяц!

Простое решение заключается в использовании встроенных классов:

DateTime startOfMonth = new DateTime(year, month, 1);
int daysInMonth = startOfMonth.AddMonths(1).AddDays(-1).Day;

Но... если вы сдадите это, то, вероятно, будете сброшены с курса ... однако вы можете использовать его для проверки своего кода!

Поскольку это ваше домашнее задание, я не дам вам код, который вы можете сдать:
Читайте в том месяце и году, и используйте инт.Метод tryparse[^] чтобы преобразовать их в целые числа.
Тогда просто следуйте правилам: если это не февраль, то это тривиально: месяц к Дням постоянен, так что вы могли бы использовать switch или массив постоянных значений для его преобразования.
Если это февраль, то следуйте правилам. Чтобы проверить, является ли что-то делимым, используйте оператор модуля (или остатка) [^] если остаток от a /b равен нулю, то a делится на b.

Дайте ему попробовать - посмотрите, как далеко вы можете получить!


Рейтинг:
2

George Swan

Ваш алгоритм поиска високосного года немного запутан. Этому алгоритму легче следовать:

Правило 1:

Если год делится на 4, а год не делится на 100, то это високосный год

Правило 2:

Если год делится на 400, то это високосный год.

Два утверждения в правиле 1 могут быть соединены логическим и. Правило 1 может быть присоединено к правилу 2 с помощью логического оператора OR, чтобы получить результат в одной строке кода. Вы можете проверить результат с помощью DateTime.IsLeapYear метод.


Рейтинг:
2

Thomas Daniels

int month = 1; // January
int year = 2019;
int days = DateTime.DaysInMonth(year, month);
Чтобы проверить, является ли это високосным годом, вы можете либо реализовать свои шаги с помощью оператора modulo % (если a % b дает остаток a, деленный на b, так что если a делится на b, a % b равен нулю) или вы можете просто использовать DaysInMonth чтобы проверить, есть ли в феврале 29 дней:
int year = 2020;
bool leapYear = DateTime.DaysInMonth(year, 2) == 29;