我想知道如何在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.我想知道是否有人有一些指导我应该如何解决这个问题。
答案 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;
因为您未能明确表达的规则(我在上面已经猜到)是“如果开始时间大于结束时间,那么它们应该被解释为连续几天发生” - 这是绝不是系统应该做的通用假设。