2

这是我的代码:

DateTime startDate = Convert.ToDateTime( orderDate ).AddMonths(-1);
DateTime endDate = Convert.ToDateTime( orderDate );

orderDate 是我传入的有效日期。

我如何始终保证 startDate 是 orderDate 上个月的第一天?我如何始终保证 endDate 是 orderDate 每月的最后一天?

例子:

orderDate = 5/4/2012

I want startDate to be 4/1/2012 (or 04/1/2012 whichever is default)
I want endDate to be 4/30/2012

我怎样才能做到这一点?

4

5 回答 5

2
DateTime startDate = Convert.ToDateTime( orderDate ).AddMonths(-1);
// set to first of month
startDate = startDate.AddDays(1-startDate.Day);

// Set end date to last of month, which is one day before first of next month
DateTime endDate = startDate.AddMonths(1).AddDays(-1);
于 2012-05-04T21:14:25.297 回答
1
origDate = startDate.AddMonths(-1);
DateTime myDate = new DateTime(origDate.Year, origDate.Month, 1);

http://msdn.microsoft.com/en-us/library/xcfzdy4x.aspx

像这样的东西......我们经常这样做,以至于我们刚刚创建了一个扩展方法。

于 2012-05-04T21:11:43.827 回答
1
DateTime startDate = new DateTime( orderDate.Month == 1 ? orderDate.Year - 1 : orderDate.Year, orderDate.Month - 1, 1);
DateTime endDate = new DateTime(orderDate.Year, orderDate.Month, DateTime.DaysInMonth(orderDate.Year, OrderDate.Month));
于 2012-05-04T21:11:52.560 回答
0
var orderDate = DateTime.Now.Date;
var endDate = orderDate.AddDays(-orderDate.Day);
var startDate  = endDate.AddDays(-(endDate.Day - 1));
于 2012-05-04T21:23:44.093 回答
0

使用 DateTime 构造函数,该构造函数为每一年、每月、每一天……获取单独的值,并相应地调整它们(即每月的第一天意味着天 = 1)。

于 2012-05-04T21:12:28.990 回答