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

Calculate timespan between 2300 and 0100

我想知道如何获得 2300 和 0100 之间的持续时间,这应该是 0200,但它 returns 2200。我正在使用 Xamarin.Forms 开发一个应用程序并使用两个 TimePickers returns一个时间跨度。

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

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

你有特定的规则,你必须执行它们:

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

因为您未能阐明的规则(我在上面已经猜到了)是 "if the start time is greater than the end time, then they should be interpreted as occurring on successive days" - 这绝不是 普遍的 假设系统应该做的。