【问题标题】:How to get quarter numbers between 2 Dates. Between 2 and 1 -> 2341如何获得两个日期之间的季度数字。在 2 和 1 之间 -> 2341
【发布时间】:2019-04-09 14:14:12
【问题描述】:

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

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

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

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

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

  2. 季度 - 4 月、5 月、6 月,

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

  4. 季度 - 10 月、11 月、12 月。

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

例如:

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

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

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

【问题讨论】:

  • 什么是“quetters”?请阅读How to Asktourminimal reproducible example 以使这个问题变得更好,以便我们提供帮助
  • @BugFinder 很抱歉拼写错误。我指的是季度数字。
  • 但是季度数字是多少?日期没有季度数字
  • @BugFinder 我们可以得到 2 个不同日期的 2 个季度。然后获取它们之间的季度列表。
  • 如果你能给出第一次约会和第二次约会的非常具体的例子,那真的很有帮助。请注意,不同的系统可能使用不同的季度概念 - 如果您的意思是“1 月至 3 月、4 月至 6 月、7 月至 9 月、10 月至 12 月”,则值得明确说明。

标签: c# datetime


【解决方案1】:

试试这样的:

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));

【讨论】:

  • 感谢您的回答。
【解决方案2】:

尝试以下:

            DateTime startDate = DateTime.Parse("2/10/17");
            DateTime endDate = DateTime.Now;

            DateTime previousQuarter = new DateTime(
                startDate.Year, (4 * (startDate.Month / 4)) + 1, 1);

            List<DateTime> quarters = new List<DateTime>();

            DateTime quarter = previousQuarter;
            while (quarter < endDate)
            {
                quarter = quarter.AddMonths(3);
                quarters.Add(quarter);
            }

【讨论】:

    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多