我有两次像
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
我想你需要这样的东西;
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
这是一个演示。
很抱歉,我不明白你为什么对TimeSpan
这个案子感兴趣。这是一段时间。你需要用DateTime
获得每小时的时间。
使用此函数:
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