c#:如何获取特定时间段的上一年至今和上一个月至今?

c#: How do I get the previous year-to-date and previous month-to-date for specific time periods?

我想使用 c# 将当前周至今与上周至今的同一时期进行比较。例如,如果今天是星期三,如果一周的第一天是星期日,那么我想比较星期日 - 本周星期二与星期日 - 上周星期二的总数。我没有计算星期三,因为直到当天午夜我才拥有一整天的数据。

这同样适用于将此 mtd 与上个月和去年的相同天数进行比较。例如,如果当前日期是6月19日,我想将上个月5月1日-18日以及去年1月1日-6月18日的数据与今年1月1日-6月18日的数据进行比较

我尝试使用的变量如下所示:

//Current dates
DateTime currentDte = DateTime.Now;
DateTime beginWeek = DateTime.Now.StartOfWeek(DayOfWeek.Sunday);
DateTime beginMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
DateTime beginYear = new DateTime(DateTime.Now.Year, 1, 1);

//Historical dates
DateTime lastWeekToDate = DateTime.Now.StartOfWeek(DayOfWeek.Sunday - (7 - (int)DateTime.Now.DayOfWeek));
DateTime lastMonthToDate =
DateTime lastYearToDate =

如您所见,我计算出当前日期并可以遍历它们以获取我需要的 wtd、mtd 和 ytd 数据。而且我设法弄清楚如何获得我需要的最后一周。

但我不知道如何获取我需要的 lastMonthToDate 和 lastYearToDate 日期。我已经尝试了我能想到的一切。我已经阅读了日期文档,直到我的眼睛受伤了,但我还是想出了鹅蛋。任何人都可以提供任何建议吗?

如果我对你的问题理解正确,你只需要使用AddMonthsAddYears

DateTime lastMonthToDate = beginMonth.AddMonths(-1);
DateTime lastYearToDate  = beginYear.AddYears(-1);

编辑

根据您的评论 - 看起来您希望从当前日期中减去 months/years,在这种情况下它将是

DateTime lastMonthToDate = currentDte.AddMonths(-1);
DateTime lastYearToDate  = currentDte.AddYears(-1);

如果是一天中的时间让您失望,只需使用日期部分 DateTime.Now.Date.AddMonths(-1)

根据我从 Zeph 收到的反馈,我能够使用以下代码获取去年年初:

DateTime startDate = beginYear.AddYears(-1); 

现在我可以根据间隔日期统计我需要的所有年初至今数据。非常感谢!