两次之间的时间间隔为一小时

时间:2014-03-14 07:56:44

标签: c# datetime timespan

我有两次喜欢

Time A:09:00 AM

Time B:06:00 PM 我想得到时间A和时间B之间的总小时数 并以1小时的时间跨度显示 例如:

09:00 AM

10:00 AM

11:00 AM

12:00 PM

upto

06:00 PM

2 个答案:

答案 0 :(得分:5)

我认为你需要类似的东西;

DateTime dt1 = DateTime.Parse("09:00 AM");
DateTime dt2 = DateTime.Parse("06:00 PM");
while (dt1 <= dt2)
{
     Console.WriteLine(dt1.ToString("hh:mm tt"));
     dt1 = dt1.AddHours(1);
}

输出将是;

09:00 AM
10:00 AM
11:00 AM
12:00 PM
01:00 PM
02:00 PM
03:00 PM
04:00 PM
05:00 PM
06:00 PM

这里是demonstration

对不起,我不明白为什么你对TimeSpan感兴趣。这是一段时间。您需要使用DateTime每小时一次。

答案 1 :(得分:3)

使用此功能:

public static IEnumerable<DateTime> GetHours(DateTime startTime, DateTime endTime)
{
    var currentTime = startTime;

    while (currentTime <= endTime)
    {
        yield return currentTime;
        currentTime = currentTime.AddHours(1);
    }
}

如果您只需要两个事件之间的小时数,则可以使用

的变体
(endTime - startTime).TotalHours

这将返回double。要计算从迭代器返回的项数,请使用

(int)(endTime - startTime).TotalHours + 1