If you don't specify that your end data is on the day after the start date then it is assumed that they are the same date, so the result of that calculation is exactly as it should be. Try this:
VB Code:
Dim startTime As Date 'Read is start time.
Dim endTime As Date 'Read in end time.
If endTime < startTime Then
endTime.AddDays(1)
End If
Dim duration As TimeSpan = endTime - startTime
Having said that, I would think that a properly written application of this type would take into account the date as well as the time, so there shouldn't be an issue.