c#中am和pm两次之间的差异

时间:2017-03-07 11:39:39

标签: c# .net time

我想计算开始时间和结束时间之间的时差。为此我使用以下代码。

 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。

我如何计算确切的差异?

2 个答案:

答案 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);
}