我怎样才能找到两个给定日期和时间之间的所有时间?

时间:2016-06-28 14:56:23

标签: c# .net winforms

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中的这种格式或其他格式,但想要获得两个给定日期之间的所有日期+时间。

3 个答案:

答案 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();

实例:http://rextester.com/WCGZL87983

答案 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"));
 }