我有开始时间,结束时间和持续时间..我想在开始时间中添加持续时间,直到在c#中实现结束时间?

时间:2013-05-29 14:10:11

标签: c# time range

我有开始时间,结束时间和持续时间。我想在开始时间中添加持续时间,直到在c#中达到结束时间?

例如,开始时间为09:00:00

结束时间为15:00:00,持续时间差为20分钟

我需要这种输出:

09:00:00-09:20:00
09:20:00-09:40:00
09:40:00-10:00:00

并将其绑定到gridview

5 个答案:

答案 0 :(得分:4)

这种方法可以做到:

static IEnumerable<DateTime> Spend(DateTime startTime, DateTime endTime, TimeSpan duration)
{
    while (startTime <= endTime)
    {
        yield return startTime;
        startTime = startTime.Add(duration);
    }
}

样本用法如下:

foreach (var time in Spend(DateTime.Now, DateTime.Now.AddHours(5), TimeSpan.FromMinutes(20)))
    Console.WriteLine(time);

答案 1 :(得分:1)

使用TimeSpan,你可以:

TimeSpan startTime = new TimeSpan(0, 9, 0, 0);
TimeSpan endTime = new TimeSpan(0, 15, 0, 0);
TimeSpan counter = startTime;
TimeSpan durationPeriod = new TimeSpan(0, 20, 0);
List<string> durations = new List<string>();

while (counter < endTime)
{
    durations.Add(counter.ToString() + "-" + counter.Add(durationPeriod));
    counter = counter.Add(durationPeriod);
}

foreach (var duration in durations)
{
    Console.WriteLine(duration + Environment.NewLine);
}

输出:

timespan

答案 2 :(得分:0)

当您将-二元运算符与两个DateTime对象一起使用时,您会获得TimeSpan

所以你可以这样做:

TimeSpan t = end - start;

然后,您可以根据需要将TimeSpan重新添加回DateTime。例如,要将该间隔添加三次到开始时间:

for (int i = 0; i < 3; i++)
{
    start = start.Add(t);
}

Add方法不会修改DateTime,因此我们将其分配给方法的返回值。

现在你所要做的就是从数据库中获取DateTime并将其应用到它们。

编辑:我发现您要多次添加的时间间隔不是开始时间和结束时间之间的差异。所以你可以这样做:

DateTime start = new DateTime(2013, 5, 29, 0, 9, 0);
DateTime end = new DateTime(2013, 5, 29, 15, 0, 0);

TimeSpan interval = new TimeSpan(0, 20, 0 0); // 20 minutes
for (DateTime temp = start; temp < end; temp = temp.Add(interval))
{
    // Here you output temp, such as:
    Console.WriteLine (temp.ToShortTimeString() + " - " + temp.Add(interval).ToShortTimeString());
}

答案 3 :(得分:0)

var startTime = new TimeSpan(9, 0, 0);
while (startTime <= new TimeSpan(15, 0, 0)) {
    var endTime = startTime + new TimeSpan(0, 20, 0);
    Console.WriteLine(string.Format("{0}-{1}", startTime, endTime));
    startTime = endTime;
}

答案 4 :(得分:0)

var dates = new List<DateTime>();

for (var dt = start; dt <= end; dt = dt.AddMinutes(gap))
{
   dates.Add(dt);
}

//  bind the gridview using dates 
相关问题