c# - 如何获得两个日期之间的季度数字。在 2 和 1 之间 -> 2341
问题描述
我在堆栈上搜索了一下,我只找到了两个日期之间的季度数。
但我正在寻找两个日期之间的季度列表。
所以首先我们得到每个日期的季度数。
我们通过下一条规则得到它们:
季度 - 一月,二月,三月。
季度 - 四月,五月,六月,
季度 - 七月,八月,九月,
季度 - 十月,十一月,十二月。
对于每个日期,我们得到季度数。这部分我可以自己解决。第二部分是获得其中两个之间的季度范围。
例如:
1 日期是 01.07.2017 - 3季度,
2 日期是 01.04.2018 - 2季度。
2和3之间的范围应该是 [3,4,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));
推荐阅读
- python - Matplotlib 未显示正确和所需的 x 轴
- r - 基于列中的子字符串合并数据框
- asp.net-mvc - 使用带有 Sitefinity 和 Portal Connector 和 Dynamic CRM 的实体框架
- pandas - 如何有效地基于过滤获取单元格的值
- php - 在 ACF DateTimePicker 字段的 48 小时之前显示 DIV,并在相同 ACF DateTimePicker 字段的 24 小时之后隐藏
- crystal-reports - 需要以编程方式在水晶报表中上下移动部分
- extjs - 使 ExtJS 应用程序严格 CSP 兼容的技巧或覆盖
- r - 如何从 MLeval 获取测试数据 ROC 图
- android - 以编程方式生成自定义视图时不调用 onRestoreInstanceState
- postgresql - 我的项目没有连接到我的 Postgres 服务器