如何获得两个日期之间的季度数字。在 2 和 1 之间 -> 2341

Posted

技术标签:

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

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

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

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

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

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

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

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

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

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

例如:

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

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

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

【问题讨论】:

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

【讨论】:

以上是关于如何获得两个日期之间的季度数字。在 2 和 1 之间 -> 2341的主要内容,如果未能解决你的问题,请参考以下文章

用java怎么计算两个日期之间年数,季度数,月数

查找 2 个日期之间的所有季度

如何获得矩阵中两个数字之间的对角线数字?

如何获得两个日期之间的确切月数?

如何获得两个日期之间的差异(informix)?

如何计算两个日期之间的差异?