private void GetTimeBetween()
{
DateTime a = new DateTime(2010, 04, 24, 13, 10, 00);
DateTime b = new DateTime(2010, 04, 25, 13, 10, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
double d = b.Subtract(a).TotalMinutes;
}
我得到TotalMinutes 1440
但是我现在怎样才能创建一个列表,其中包含a和b之间两个日期之间的所有日期和时间,但跳跃时间为10分钟?
例如,在列表中,第一项将是:
24/4/2010 13:10:00
然后分机项目
24/4/2010 13:20:00
依此直到b
25/4/2010 13:10:00
以List中的这种格式或其他格式,但想要获得两个给定日期之间的所有日期+时间。
答案 0 :(得分:2)
哎呀,有时对过度工程的事情很有趣。有一个Aggregate
函数可以将列表转换为标量值 - 让我们创建一个以另一种方式运行的函数
public static class Extensions
{
public static IEnumerable<T> Explode<T>(this T value, Func<T,T> next, Func<T,bool> limit)
{
var n = value;
while(!limit(n))
{
yield return n;
n = next(n);
}
}
}
用法:
DateTime a = new DateTime(2010, 04, 24, 13, 10, 00);
DateTime b = new DateTime(2010, 04, 25, 13, 10, 00);
var result = a.Explode(x => x.AddMinutes(10), x => x>b).ToList();
答案 1 :(得分:0)
你可以循环它:
var list = new List<DateTime>();
var start = new DateTime(2010, 04, 24, 13, 10, 00);
var end = new DateTime(2010, 04, 25, 13, 10, 00);
for (DateTime date = start; date <= end; date = date.AddMinutes(10))
list.Add(date);
答案 2 :(得分:-1)
试试这个
var start = new DateTime(2010, 04, 24, 13, 10, 00);
var end = new DateTime(2010, 04, 25, 13, 10, 00);
for (DateTime date = start; date <= end; date = date.AddMinutes(10))
{
Console.WriteLine(date.ToString("dd/mm/yyyy HH:mm:ss"));
}