Количество дней прошлого месяца.

Стартовая страница Форумы Понять, как работает ПО Формулы Количество дней прошлого месяца.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #36291
    Aeromixture
    Участник

    Подскажите как получить количество дней прошлого месяца.

    #36292
    manjey73
    Участник

    https://learn.microsoft.com/ru-ru/dotnet/api/system.datetime.daysinmonth?view=netcore-3.1

    Есть такое, думаю определить текущий месяц и год из DateTime.Now не составит труда.

    #36293
    manjey73
    Участник

    Надо только для января проверку сделать,

    #36299
    a80808
    Участник

    А массив из 12 значений? Индекс — месяц, значение — число дней?
    Потом вычисляем текущий месяц по DateTime.Now, отнимаем единицу и используем как индекс.

    dt = DateTime.Now
    month = month.dt

    Вроде как то так…

    #36300
    manjey73
    Участник

    високосный и обычный год ?

    dt.month наверное.

    #36303
    a80808
    Участник

    dt.month наверное.
    Ну да ))
    На високосный дополнительная проверка и если високосный и февраль = + 1 ))
    А C# нет функции числа дней в месяце?

    #36305
    JurasskPark
    Участник
    
    const int July = 7;
            const int Feb = 2;
    
            int daysInJuly = System.DateTime.DaysInMonth(2001, July);
            Console.WriteLine(daysInJuly);
    
            // daysInFeb gets 28 because the year 1998 was not a leap year.
            int daysInFeb = System.DateTime.DaysInMonth(1998, Feb);
            Console.WriteLine(daysInFeb);
    
            // daysInFebLeap gets 29 because the year 1996 was a leap year.
            int daysInFebLeap = System.DateTime.DaysInMonth(1996, Feb);
            Console.WriteLine(daysInFebLeap);
        }
    #36306
    manjey73
    Участник
    public double DaysInMonth(DateTime dt)
    {
    int daysInMonth;
    if dt.Month > 1
    {
    daysInMonth = System.DateTime.DaysInMonth(dt.Year, dt.Month - 1);
    }
    else
    {
    daysInMonth = System.DateTime.DaysInMonth(dt.Year - 1, 12);
    }
    return (double)daysInMonth;
    }

    Не проверял вообще.

    #36308
    manjey73
    Участник

    Можно не подавать в формулу DateTime.Now() а сразу там наверное сделать

    public double DaysInMonth()
    {
    DateTime dt = DateTime.Now(); // или DateTime.UtcNow()
    int daysInMonth;
    if dt.Month > 1
    {
    daysInMonth = System.DateTime.DaysInMonth(dt.Year, dt.Month - 1);
    }
    else
    {
    daysInMonth = System.DateTime.DaysInMonth(dt.Year - 1, 12);
    }
    return (double)daysInMonth;
    }
Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Для ответа в этой теме необходимо авторизоваться.