我想不出一个简单的一两个班轮可以获得前几个月的第一天和最后一天.
我是LINQ-ifying一个调查网络应用程序,他们挤压了一个新的要求.
调查必须包括上个月的所有服务请求.因此,如果是4月15日,我需要所有Marches请求ID.
var RequestIds = (from r in rdc.request where r.dteCreated >= LastMonthsFirstDate && r.dteCreated <= LastMonthsLastDate select r.intRequestId);
如果没有开关,我就无法轻易想到日期.除非我是盲目的,并且忽视了内部方法.
var today = DateTime.Today; var month = new DateTime(today.Year, today.Month, 1); var first = month.AddMonths(-1); var last = month.AddDays(-1);
如果你真的需要一两行就可以在线.
我过去这样做的方式是先到本月的第一天
dFirstDayOfThisMonth = DateTime.Today.AddDays( - ( DateTime.Today.Day - 1 ) );
然后减去一天到上个月结束
dLastDayOfLastMonth = dFirstDayOfThisMonth.AddDays (-1);
然后减去一个月以获得上个月的第一天
dFirstDayOfLastMonth = dFirstDayOfThisMonth.AddMonths(-1);
使用Fluent DateTime https://github.com/FluentDateTime/FluentDateTime
var lastMonth = 1.Months().Ago().Date; var firstDayOfMonth = lastMonth.FirstDayOfMonth(); var lastDayOfMonth = lastMonth.LastDayOfMonth();
DateTime LastMonthLastDate = DateTime.Today.AddDays(0 - DateTime.Today.Day); DateTime LastMonthFirstDate = LastMonthLastDate.AddDays(1 - LastMonthLastDate.Day);
我用这个简单的单线程:
public static DateTime GetLastDayOfPreviousMonth(this DateTime date) { return date.AddDays(-date.Day); }
请注意,它保留了时间.