Reputation: 902
I have two times like
Time A:09:00 AM
and Time B:06:00 PM
I want to get the total hours between Time A and Time B
and show it with the time span of 1 hour
e.g:
09:00 AM
10:00 AM
11:00 AM
12:00 PM
upto
06:00 PM
Upvotes: 3
Views: 1627
Reputation: 98740
I think you need something like;
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);
}
Output will be;
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
Here's a demonstration.
I'm sorry but I don't understand why you interested in TimeSpan
on this case. It is a duration in time. You need to get every hour times with DateTime
.
Upvotes: 5
Reputation: 10201
Use this function:
public static IEnumerable<DateTime> GetHours(DateTime startTime, DateTime endTime)
{
var currentTime = startTime;
while (currentTime <= endTime)
{
yield return currentTime;
currentTime = currentTime.AddHours(1);
}
}
If you just need the number of hours between two events, you can use a variation of
(endTime - startTime).TotalHours
This will return a double
. To calculate the number of items returned from the iterator, use
(int)(endTime - startTime).TotalHours + 1
Upvotes: 3