我正在查找两个给定日期之间的所有季度。
例如,如果当前日期是今天(2013年1月15日),过去的日期是2012年1月1日,我应该得到以下结果:供应信息2012年09月归档2012年06月归档
我可以继续从当前日期扣除3个月,但这并不准确,因为下面的测试表明:
[TestMethod]
public void FindAllQuaters_FromAGivenDate_TillAPastDate()
{
var dateFinder = new FindQuarter();
//Between Feb 2013 & Jan 2012
var dates = dateFinder.GetAllQuarters(new DateTime(2013, 02, 01), new DateTime(2012, 01, 01)).ToList();
Assert.IsTrue(dates.Count == 4);
Assert.IsTrue(dates.First().Month == 12);
Assert.IsTrue(dates.First().Year == 2012);
Assert.IsTrue(dates.Skip(1).First().Month == 9);
Assert.IsTrue(dates.Skip(1).First().Year == 2012);
Assert.IsTrue(dates.Skip(2).First().Month == 6);
Assert.IsTrue(dates.Skip(2).First().Year == 2012);
Assert.IsTrue(dates.Skip(3).First().Month == 3);
Assert.IsTrue(dates.Skip(3).First().Year == 2012);
}
}
public class FindQuarter
{
public IEnumerable<DateTime> GetAllQuarters(DateTime current, DateTime past)
{
while (current > past)
{
current = current.AddMonths(-3);
yield return current;
}
}
}
我怎样才能做到这一点?季度定义为3月,6月,9月和12月。我还需要该月的最后一天(我希望很快)。
编辑:这是行不通的,因为它不断扣除3个月从一个给定的日期,例如,如果当前日期是2013年2月,我减少3个月,我得到2012年11月,而不是2012年12月。
- 一月、二月、三月中的任何日期都属于第一季度,即三月
- 四月、五月、六月的任何日期都属于第二季度,即六月
- 七月、八月、九月的任何日期都属于第三季度,即九月
- 十月、十一月、十二月中的任何日期都属于第四季度,即十二月
5条答案
按热度按时间siv3szwd1#
这似乎是工作。
7uzetpgm2#
你可以使用下面的类我写了some time ago:
季度:
DEMO
yi0zb3m43#
我认为你可以使用
%
操作符。例如:nle07wnf4#
我知道这是一个老线索,但这里有一个Lambda表达式来获得这些信息:
fjaof16o5#
简单的公式得到季度差异