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

本文关键字:范围 日期 何获取 获取 | 更新日期: 2023-09-27 17:56:42

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

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

将 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 个月前。