【问题标题】:How to get an exact 6 month date range?如何获得准确的 6 个月日期范围?
【发布时间】:2016-11-16 05:27:51
【问题描述】:

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

【问题讨论】:

  • 除非你给它一个负值,否则DateTime.AddMonths() 到底为什么要减去天?请向我们展示你的代码和你得到的输出。
  • 您所期望的范围内的这些日期似乎都与您所说的当前日期无关。你能解释一下你真正想要什么吗?您是指当前月份而不是日期吗?
  • 6 个月的规则不明确。您是指在当月月底结束的 6 个月,还是定义了特定的 6 个月期间(始终为 9 月至 2 月至 9 月)?
  • @VisualVincent 你回答了你自己的问题。这样做并不像您想象的那么罕见
  • startDate 更改为new DateTime(date.Year, date.Month, 1).AddMonths(-5);

标签: c# datetime


【解决方案1】:

将 juharr 的评论作为答案,因为它是正确的

简单的改变:

DateTime startDate = endDate.AddMonths(-6);

DateTime startDate = new DateTime(date.Year, date.Month, 1).AddMonths(-5);

【讨论】:

    【解决方案2】:

    首先,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)

    【讨论】:

    • “看起来你需要 -3 个月和 +3 个月” - 你怎么看? Op 给出了日期02-Feb-2016 并希望在29-Feb-2016 之前回复01-Sep-2015
    • 他的问题是“我需要六个月的范围”。这就是我的回应。我没有看到另一部分。
    【解决方案3】:

    根据您问题中的示例,这应该适合您:

    DateTime end = new DateTime(DateTime.Now.AddMonths(1).Year, DateTime.Now.AddMonths(1).Month, 1).AddDays(-1);
    DateTime start = end.AddMonths(-6);
    

    【讨论】:

    • var end = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonth(1).AddDay(-1); 另外start 将是本月的最后一天而不是第一天,所以改为var start = new DateTime(DateTime.Now.Year, DataTime.Now.Month, 1).AddMonths(-5)
    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多