如何获得确切的6个月日期范围?

时间:2016-07-13 14:42:01

标签: c# datetime

我需要帮助才能获得当前日期的六个月范围。例如,如果当前日期为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的评论是我的工作。

3 个答案:

答案 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)