计算2300到0100之间的时间跨度

时间:2015-01-06 13:09:06

标签: c# time timespan

我想知道如何在2300和0100之间获得持续时间,这应该是0200,但它返回2200.我正在使用Xamarin.Forms处理应用程序并使用两个返回TimeSpan的TimePickers。

private TimeSpan CalculateDuration()
{
  var result = timePickerEnd.Time.Subtract(timePickerStart.Time);
  return result.Duration();
}

只要startTime小于endTime,一切正常。但如果有人在2300开始并在0100结束它返回22.我想知道是否有人有一些指导我应该如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

您有特定的规则,您必须实施它们:

var ts1 = timePickerStart.Time;
var ts2 = timePickerEnd.Time;
var difference=  ts2.Subtract(ts1);
if(ts1 > ts2)
{
    difference= difference.Add(TimeSpan.FromHours(24));
}
return difference;

因为您未能明确表达的规则(我在上面已经猜到)是“如果开始时间大于结束时间,那么它们应该被解释为连续几天发生” - 这是绝不是系统应该做的通用假设。