我需要帮助才能从当前日期开始获得六个月的范围。例如,如果当前日期是02-Feb-2016
那么我希望开始日期01-Sep-2015
,结束日期29-Feb-2016
。
我已经尝试了代码:
DateTime date = new DateTime(2016,02,06);
DateTime endDate = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);
DateTime startDate = endDate.AddMonths(-6);
输出为:
Startdate: 29-Aug-2015 endDate: 29-Feb-2016
但我想要以下输出:
Startdate: 01-Sep-2015 endDate: 29-Feb-2016
更新:
我已经用我尝试并输出的示例更新了问题。
Juharr的评论是我的工作。
将 juharr 的评论作为答案,因为它是正确的
只需更改:
DateTime startDate = endDate.AddMonths(-6);
自
DateTime startDate = new DateTime(date.Year, date.Month, 1).AddMonths(-5);
根据您问题中的示例,这应该对您有用:
DateTime end = new DateTime(DateTime.Now.AddMonths(1).Year, DateTime.Now.AddMonths(1).Month, 1).AddDays(-1);
DateTime start = end.AddMonths(-6);
首先,180天并不完全是六个月。 看起来你需要-3个月和+3个月。 这将给你六个月的突破。
几个月:
var dat = new DateTime(2016, 01, 01);
var startdat = dat.AddMonths(-3);
var enddat = dat.AddMonths(3);
但是,如果你真的是指180天......
几天:
var dat = new DateTime(2016, 01, 01);
var startdat = dat.AddDays(-90);
var enddat = dat.AddDays(90);
现在您拥有所需的两个日期。
更新 1:如果你只需要 -6 个月,你的函数确实有效,但正如我之前提到的,-180 天与 -6 个月不是一回事。
如果您愿意 180 天,您仍然可以使用该AddDays(-180)
,或者AddMonths(-6)
6 个月前。