我有两个日期时间范围:
DateTime start = new DateTime(2012,4,1);
DateTime end = new DateTime(2016,7,1);
我希望在此期间之间按年份分组所有期间。这意味着输出必须是:
2012-04-01 - 2012-12-31
2013-01-01 - 2013-12-31
2014-01-01 - 2014-12-31
2015-01-01 - 2015-12-31
2016-01-01 - 2016-07-01
最好输出在 IList<Tuple<DateTime,DateTime>>
中列表。
你会怎么做?无论如何,有没有办法用 LINQ 做到这一点?
哦,夏令时并不是绝对重要,但肯定是一个奖励。
谢谢!
最佳答案
DateTime start = new DateTime(2012,4,1);
DateTime end = new DateTime(2016,7,1);
var dates = from year in Enumerable.Range(start.Year,end.Year-start.Year+1)
let yearStart=new DateTime(year,1,1)
let yearEnd=new DateTime(year,12,31)
select Tuple.Create(start>yearStart ? start : yearStart, end<yearEnd ? end : yearEnd);
IList<Tuple<DateTime,DateTime>> result = dates.ToList();
关于c# - 如何将一段时间分组为年度? (将时间跨度分成年度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912449/