【发布时间】:2010-04-17 02:09:19
【问题描述】:
如果我有一对日期,并且我想生成它们之间所有日期的列表(包括),我可以执行以下操作:
System.DateTime s = new System.DateTime(2010, 06, 05);
System.DateTime e = new System.DateTime(2010, 06, 09);
var list = Enumerable.Range(0, (e - s).Days)
.Select(value => s.AddDays(value));
我坚持的是,我有一个日期对列表,我想将它们分解为它们之间所有日期的列表。示例:
{2010-05-06, 2010-05-09}, {2010-05-12, 2010-05-15}
应该会导致
{2010-05-06, 2010-05-07, 2010-05-08, 2010-05-09, 2010-05-12, 2010-05-13, 2010-05-14, 2010-05-15}
请注意,日期对保证不会相互重叠。
【问题讨论】:
-
TimeSpan.Days != TimeSpan.TotalDays msdn.microsoft.com/en-us/library/… msdn.microsoft.com/en-us/library/…
-
是的,Days != TotalDays,但是 Days 是我想要的。请参阅您提供的链接中的示例: TimeSpan( 1 ).Days == 0;时间跨度(1).TotalDays == 1.15740740740741E-12;时间跨度(111222333444555).天== 128;时间跨度(111222333444555).TotalDays == 128.729552597865;在第一个示例中,循环 0..0 将给出一天,这正是我想要的。在第二个示例中,循环 0..128 将给出 129 天,这也是我想要的。我想我可以循环 1..ceil(128.729552597865) 然后返回 s.AddDays(value - 1),但我为什么要这样做?
-
只是指出,当两个
DateTime值相隔一个多月时,使用Days会中断。 :)