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

本文关键字:时间 日期 之间 两个 | 更新日期: 2023-09-27 17:52:33

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分钟的跳跃?

例如,在List中,第一项将是:

24/4/2010 13:10:00

则下一项为

24/4/2010 13:20:00

以此类推,直到b

25/4/2010 13:10:00

在此格式中的列表或在其他格式中,但要获得所有日期+两个给定日期之间的时间的想法。

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

哎呀,有时候过度设计东西很有趣。有一个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

你可以循环它:

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);

试试这个

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