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

本文关键字:时间跨度 之间 0100 2300 计算 | 更新日期: 2023-09-27 18:36:30

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

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

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

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

你有特定的规则,你必须实现它们:

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

因为你没有阐明的规则(我在上面已经猜到了)是"如果开始时间大于结束时间,那么它们应该被解释为发生在连续的日子里"——这绝不是系统应该做出的普遍假设。