假设我有两个对象,它们分别为[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);
}
}