首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别DateTime间隔邻近性,并考虑到以前的间隔

识别DateTime间隔邻近性,并考虑到以前的间隔
EN

Stack Overflow用户
提问于 2019-06-04 21:21:33
回答 2查看 53关注 0票数 0

我需要找到一种方法来跟踪某项任务是否已经按照既定的时间间隔执行,如果没有执行,则将其标记为“逾期”。

举个例子,我需要每6个月保养一辆卡车。我跟踪最后一次服务何时完成,服务可能在预定时间之前或之后发生几天(或数周)。

我还没有开始编写这方面的代码,主要是因为我需要了解逻辑。

数据库存储初始相对引用时间(DateTime)、间隔类型(可以是小时、天数或月份),以及满足间隔的数字。

一个例子是:

  • 初步日期:2020年1月1日
  • 类型:月份
  • 计数:6

这意味着,在2020年1月1日后,每6个月就需要完成这项任务。

想法是,如果服务完成,卡车将被标记为不需要服务,但如果下一个服务还没有完成,卡车将被标记同样。

EN

回答 2

Stack Overflow用户

发布于 2019-06-04 21:50:20

您可以将最近的服务日期(LastServiced)存储为DateTime,并将MaxServiceInterval属性存储为TimeSpan类型。这将允许您有一个经过计算的属性NextService,该属性将返回上一个日期以及允许的最大间隔。您还可以拥有一个IsOverdueForService属性,通过比较下一个服务日期和当前日期来告诉您车辆是否过期维修。

使用最后一个服务日期的原因是,下一个服务日期应该基于最近的服务,而不是最初的服务。

代码语言:javascript
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2019-06-05 04:29:12

谢谢你们的投入!非常有帮助。

最后我所做的(不把自己与未来可能会改变的时间表联系在一起)是在我的“已完成”表中添加了一个额外的列/字段,其中带有一个标识计划服务时间戳的DateTime。一旦完成,我可以根据时间表的要求来计算,如果过期了的话。

示例:

  • 日程安排要在1月1日举行一次服务。
  • 维护工作在1月4日进行。
  • 完成维护的时间戳显示第四个。
  • 排定列显示第一列。
  • 计算将查看计划和AddMonths(6) (或按附表定义),并将其与DateTime.Now进行比较。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56451511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档