用于更新后续开始和结束日期时间的逻辑



假设我有两个对象,它们分别为[start DateTime][end DateTime]。如果我更改了第一个对象的[start DateTime]end DateTime][/strong>,我希望将该更改应用于下一个对象的[sstart-DateTime]/或[end-DateTime][strong>。

如果没有">日期重叠";?

注意:下一个对象应该在第一个对象的[start DateTime]和[end DateTime]之后有[start DateTime]和[end DateTime]

UPDATE每个对象的开始时间和结束时间之间的时间差根本不应该改变。

示例:此示例中所有对象的日期相同。可以有所不同。对象1->gt>开始(07:58(结束(08:28(对象2->gt>开始(08:48(结束(10:30(

当OBJECT 1被改变为->gt;开始(07:56(结束(10:46(对象2应该改变->gt;开始(目标1结束后(结束(目标2开始后(

差异也应该相似。例如,我们在OBJECT 1 END中添加了2小时18分钟,因此OBJECT 2的时间最好增加2小时18分。此外,我们将OBJECT 1 START减少了2分钟。理想情况下,这应该在OBJECT中反映为wll的2倍。

当前逻辑:伪代码我目前正在做的是,

var OBJECT1StartDifference = OBJECT1.OriginalStart - OBJECT1.Start;
var OBJECT1EndDifference = OBJECT1.OriginalEnd - OBJECT1.End;
ForEach(nextObject in ParentObject.where(obj => obj.Order > OBJECT1.order))
{
if(OBJECT1StartDifference.HasValue)
{
nextObject.Start.Add(OBJECT1StartDifference);
}
if(OBJECT1EndDifference.HasValue)
{
nextObject.End.Add(OBJECT1EndDifference);
}
}

我想到了一些可行的方法。

我现在只计算OBJECT1的开始时间和结束时间之差,而不是计算开始时间和终止时间之差。

然后我将这个差异应用于OBJECT2的开始和结束时间。

这将使OBJECT2时间始终在OBJECT1时间之后,并保持OBJECT2开始时间和结束时间之间的差值相同。

注意:如果编辑了结束时间,我也有一个逻辑来更改OBJECT1的开始时间,如果编辑了开始时间,则更改结束时间,以保持开始时间和结束时间之间的差异始终相同。

伪代码:

var deltaObject1EndTime = OBJECT1.EndTime - OBJECT1.PreviousEndTime; 
if(deltaObject1EndTime != o)
{
foreach(var OBJECT in PARENTOBJECT.Objects.Where(obj => obj.Order > OBJECT1.Order))
{
OBJECT.StartTime.Add(deltaObject1EndTime);
OBJECT.EndTime.Add(deltaObject1EndTime);
}
}

相关内容

  • 没有找到相关文章

最新更新