我想计算开始时间和结束时间之间的时差。为此我使用以下代码。
string startTime = "3:10 PM";
string endTime = "4:50 AM";
TimeSpan duration = DateTime.Parse(endTime).Subtract(DateTime.Parse(startTime));
这在大多数情况下给出了正确的答案,但在上述值的情况下,它给出了答案为" 10h20m"。但是4:50 AM和3:10Pm之间的差异是13h40m。
我如何计算确切的差异?
答案 0 :(得分:3)
也许试试这个:
string startTime = "3:10 PM";
string endTime = "4:50 AM";
DateTime start = DateTime.Parse(startTime);
DateTime end = DateTime.Parse(endTime);
if (start > end)
end = end.AddDays(1);
TimeSpan duration = end.Subtract(start);
Console.WriteLine(duration.ToString());
答案 1 :(得分:2)
这里的问题是你想要计算的是不同的一天。作为一种解决方法,您可以执行以下操作:
string startTime = "3:10 PM";
string endTime = "4:50 AM";
TimeSpan duration = DateTime.Parse(endTime) - DateTime.Parse(startTime);
if (duration < TimeSpan.Zero)
{
duration += TimeSpan.FromDays(1);
}