我有两次喜欢
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
答案 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