我需要帮助才能获得当前日期的六个月范围。例如,如果当前日期为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的评论是我的工作。答案 0 :(得分:1)
将juharr的评论作为答案移动,因为它是正确的
简单地改变:
DateTime startDate = endDate.AddMonths(-6);
到
DateTime startDate = new DateTime(date.Year, date.Month, 1).AddMonths(-5);
答案 1 :(得分:0)
根据您问题中的示例,这应该适合您:
DateTime end = new DateTime(DateTime.Now.AddMonths(1).Year, DateTime.Now.AddMonths(1).Month, 1).AddDays(-1);
DateTime start = end.AddMonths(-6);
答案 2 :(得分:-1)
首先,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)
,或者在6个月后仍然可以使用AddMonths(-6)
。