设置一个等于上个月整月的日期变量

时间:2017-11-20 11:53:12

标签: c# datetime variables report dayofmonth

这可能是一个愚蠢的问题。是否可以设置一个变量值,我可以用它来获取上个月的数据?例如,如果是9月24日,我想要从8月1日到8月31日的所有内容。因此,当前日期无关紧要。我在Stock Stock报告中使用它。我目前使用它:

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

报告会在每月1日自动运行。所以我想,从1个月开始拉,但我的老板突然改变了主意,想每天拉报告。

这有意义吗?如果您需要更多信息,请发表评论。

2 个答案:

答案 0 :(得分: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。由于我在日期中操作,这与此代码所在的库无关。

答案 1 :(得分:0)

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));