首页 > 解决方案 > 如何获得两个日期之间的季度数字。在 2 和 1 之间 -> 2341

问题描述

我在堆栈上搜索了一下,我只找到了两个日期之间的季度数。

但我正在寻找两个日期之间的季度列表。

所以首先我们得到每个日期的季度数。

我们通过下一条规则得到它们:

  1. 季度 - 一月,二月,三月。

  2. 季度 - 四月,五月,六月,

  3. 季度 - 七月,八月,九月,

  4. 季度 - 十月,十一月,十二月。

对于每个日期,我们得到季度数。这部分我可以自己解决。第二部分是获得其中两个之间的季度范围。

例如:

1 日期是 01.07.2017 - 3季度,
2 日期是 01.04.2018 - 2季度。

23之间的范围应该是 [3,4,1]。

有人可以为此提供解决方案吗?

标签: c#datetime

解决方案


尝试这样的事情:

public static IEnumerable<int> GetQuarters(DateTime from, DateTime to)
{
    if (to < from)
        throw new ArgumentException($"{to} cannot be smaller than {from}", nameof(to));

    DateTime date = from;
    int lastQuarter = -1;
    while (date <= to)
    {
        int currentQuarter = (date.Month + 2) / 3;
        if (currentQuarter != lastQuarter)
            yield return currentQuarter;
        date = date.AddDays(1);
        lastQuarter = currentQuarter;
    }
}

{3,4,1}如果你这样称呼它,它应该会给你回报:

var q = GetQuarters(new DateTime(2019, 08, 03), new DateTime(2020, 01, 01));

推荐阅读