Может ли это действительно проверить последний день месяца в asp. net ядре? - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу проверить, является ли текущий день последним днем ​​месяца, независимо от количества дней в текущем месяце. Каждый последний день текущего месяца что-то делает

Я имею в виду, если его 28 февраля 2021 года что-то делают.

Мой код

 var lastDayOfTheCurrentMonth = DateTime.DaysInMonth(currentYear, currentMonth) == 1;

                        if (lastDayOfTheCurrentMonth)
                        {
                            //calculate interest
                        }
                        {
                            //else return
                        }

Спасибо

Ответы [ 3 ]

2 голосов
/ 08 апреля 2020

Я бы немного облегчил чтение и сделал это:

var today = DateTime.Today;
var isLastDayOfMonth = (today.Day == DateTime.DaysInMonth(today.Year, today.Month));

if(isLastDayOfMonth)
{
    //do something
}
else
{
    //do something else
}

Вы можете проверить это в консольном приложении:

    static void Main(string[] args)
    {
        var today = DateTime.Today;
        var isLastDayOfMonth = (today.Day == DateTime.DaysInMonth(today.Year, today.Month));

        Console.WriteLine("Is Last Day: " + isLastDayOfMonth);

        var lastDay = new DateTime(2020, 12, 31);
        isLastDayOfMonth = (lastDay.Day == DateTime.DaysInMonth(lastDay.Year, lastDay.Month));

        Console.WriteLine("Is Last Day: " + isLastDayOfMonth);
        Console.ReadLine();
    }

Результаты:

enter image description here

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

2 голосов
/ 08 апреля 2020

Вы можете использовать метод расширения:

public static bool IsLastDayInMonth(this DateTime dt)
{
    return DateTime.DaysInMonth(dt.Year, dt.Month) == dt.Day;
}

Использование:

if (DateTime.Today.IsLastDayInMonth())
{

}

DateTime.Day возвращает день месяца, который сравнивается с количеством дней в этом месяц.

0 голосов
/ 08 апреля 2020

Да! Я составил это. NET Скрипка для демонстрации:

https://dotnetfiddle.net/kPTL90

Я не совсем понимаю, что вы пытаетесь сделать в своем коде, выражение DateTime.DaysInMonth(currentYear, currentMonth) обычно оценивается как 30 или 31 (или 28/29 в случае февраля). Почему вы тогда сравниваете это с 1?

...