Установите переменную даты, равную полному месяцу предыдущего месяца

Это, наверное, глупый вопрос. Можно ли установить значение переменной, которое я мог бы использовать для получения данных за дни предыдущего месяца? Например, если это 24 сентября, я хочу все с 1 августа до 31 августа. Так что текущая дата не должна иметь значения. Я использую это в отчете по акциям. Я использую это в настоящее время:

var firstDayofPreviousMonth = DateTime.Today.AddMonths(-1);

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

Имеет ли это смысл? Добавьте комментарий, если вам нужна дополнительная информация.

2 ответа

Решение

Вот методы, которые я использую для этого:

public static DateTime GetStartOfLastMonth(DateTime dt)
        {
            var date = dt.AddMonths(-1);
            return new DateTime(date.Year, date.Month, 1, 0, 0, 0, DateTimeKind.Local);
        }

        public static DateTime GetEndOfLastMonth(DateTime dt)
        {
            var date = dt.AddMonths(-1);
            var daysInLastMonth = DateTime.DaysInMonth(date.Year, date.Month);

            return new DateTime(date.Year, date.Month, daysInLastMonth, 0, 0, 0, DateTimeKind.Local);
        }

Примечание: в зависимости от вашего случая, вы можете изменить GetEndOfLastMonth быть 23,59,59, Поскольку я работаю с датами, это не имеет значения для библиотеки, в которой находится этот код.

DateTime refDate = DateTime.Now.AddMonths(-1);
DateTime firstDayPreviousMonth = new DateTime(refDate.Year, refDate.Month, 1);
DateTime lastDayPreviousMonth = new DateTime(refDate.Year, refDate.Month, DateTime.DaysInMonth(refDate.Year,refDate.Month));
Другие вопросы по тегам