我需要找到一种方法来跟踪某项任务是否已经按照既定的时间间隔执行,如果没有执行,则将其标记为“逾期”。
举个例子,我需要每6个月保养一辆卡车。我跟踪最后一次服务何时完成,服务可能在预定时间之前或之后发生几天(或数周)。
我还没有开始编写这方面的代码,主要是因为我需要了解逻辑。
数据库存储初始相对引用时间(DateTime)、间隔类型(可以是小时、天数或月份),以及满足间隔的数字。
一个例子是:
这意味着,在2020年1月1日后,每6个月就需要完成这项任务。
想法是,如果服务完成,卡车将被标记为不需要服务,但如果下一个服务还没有完成,卡车将被标记同样。
发布于 2019-06-04 21:50:20
您可以将最近的服务日期(LastServiced)存储为DateTime,并将MaxServiceInterval属性存储为TimeSpan类型。这将允许您有一个经过计算的属性NextService,该属性将返回上一个日期以及允许的最大间隔。您还可以拥有一个IsOverdueForService属性,通过比较下一个服务日期和当前日期来告诉您车辆是否过期维修。
使用最后一个服务日期的原因是,下一个服务日期应该基于最近的服务,而不是最初的服务。
public class ServiceSchedule
{
public DateTime LastServiced { get; set; } = new DateTime(2019, 01, 01);
public TimeSpan ServiceInterval { get; set; } = TimeSpan.FromDays(180);
public DateTime NextService => LastServiced.Add(ServiceInterval);
public bool IsOverdueForService => DateTime.Today > NextService;
}发布于 2019-06-05 04:29:12
谢谢你们的投入!非常有帮助。
最后我所做的(不把自己与未来可能会改变的时间表联系在一起)是在我的“已完成”表中添加了一个额外的列/字段,其中带有一个标识计划服务时间戳的DateTime。一旦完成,我可以根据时间表的要求来计算,如果过期了的话。
示例:
https://stackoverflow.com/questions/56451511
复制相似问题