日期时间操作

本文关键字:操作 时间 日期 | 更新日期: 2023-09-27 18:33:24

这是我的代码:

DateTime startDate = Convert.ToDateTime( orderDate ).AddMonths(-1);
DateTime endDate = Convert.ToDateTime( 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

我怎样才能做到这一点?

日期时间操作

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);
origDate = startDate.AddMonths(-1);
DateTime myDate = new DateTime(origDate.Year, origDate.Month, 1);

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

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

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

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

var orderDate = DateTime.Now.Date;
var endDate = orderDate.AddDays(-orderDate.Day);
var startDate  = endDate.AddDays(-(endDate.Day - 1));