.net - 如何处理 .NET 中的重复日期(仅限日期)?

标签 .net date scheduling

我试图找出一种处理 .NET 中重复事件的好方法,特别是对于 ASP.NET MVC 应用程序。这个想法是用户可以创建一个事件并指定该事件可以在特定时间间隔后重复发生(例如“每两周”、“每月一次”等等)。

解决这个问题的最佳方法是什么?我现在的头脑 Storm 是有两个表:Job 和 RecurringJob。作业是“主”记录,具有作业的描述以及它所针对的客户的关键,而 RecurringJob 链接回作业并具有有关发生频率的附加信息(例如,1 表示“每月一次”)以及时间跨度(例如“每周”、“每月”)。问题是如何确定和设置作业的下一次出现,因为这必须定期完成。我已经看到了两种思路:这个逻辑应该存储在数据库列中并定期更新,或者在代码中动态计算。

关于解决这个问题的任何想法或建议?

编辑:这是我正在创建的基于订阅的 Web 应用程序,目的是让服务企业轻松安排他们常见的重复性工作并跟踪他们的客户。因此,一个典型的用途可能是为 Smith 先生创建一个每月发生的“割草”工作 确切日期并不重要 - 客户能够看到 Smith 先生每个月都修剪他的草坪并跟进他关于它。

让我重新表述以上内容以更好地表达我的想法。应用程序的示例用例可能如下所示:

  • 用户调出 John Smith 的客户记录并单击 Add Job 链接。
  • 用户填写表单以创建名称为“Cut lawn”、开始日期为 11/15/2009 的作业,并选择指示该作业持续发生的复选框。用户将看到一个询问工作频率的辅助屏幕。用户指示(此时尚未决定如何 - 让我们假设选择列表)该作业每月发生一次。
  • 用户点击保存。

  • 现在,当用户查看 John Smith 的记录时,他们可以看到他有一项工作“割草”,该工作从 2009 年 11 月 15 日开始每个月都会发生。在假定的开始日期前一周时,在主仪表板上,用户会看到显示的作业带有诸如“2009 年 15 月 15 日 - 修剪草坪 (John Smith)”之类的指示符。截止日期前一周,公司有人调用他,他说他要出城到 2010 年 1 月 1 日,所以他希望将他的约会重新安排在那个日期。我们的用户可以将作业的日期更改为 1/1/2010,现在循环将从该日期开始一个月(例如,下次将是 2/1/2010)。这背后的想法是,该应用程序的目标客户是草坪护理、水管工、地毯清洁工等,其中确切日期并不重要(因为它可以而且会随着人们忙碌而改变),关键是要给予生意是史密斯先生每月服务即将到来的一个指标,有人应该给他打电话,以确定什么时候可以安排它。实际上,为这些企业提供了一种跟踪重复业务的方法,并知道何时需要跟进客户。

    最佳答案

    您的规则可能变得多复杂?如果你能说服 Powers that Be 保持简单,你的生活会更愉快 :) 你还应该让他们在各种测试情况下签字 - 如果某事计划在 30 日每月发生一次,应该它发生在二月与否?至少通过使用日期(没有时间),你应该离开而不用担心夏令时......

    您可能想查看 DDay.iCal或者为 .NET 寻找其他 iCal (RFC 2445) 实现 - 但判断库的质量可能很棘手,因为它是一个复杂的领域,有很多极端情况。

    就数据库而言,除非证明太痛苦,否则我会即时计算它。显然,您仍然必须在某处保留相同的“计算下一次出现”代码,并且它消除了定期更新的复杂性。

    关于.net - 如何处理 .NET 中的重复日期(仅限日期)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1735629/

    相关文章:

    python - 如何绘制日期和月份

    c - Windows API : Get micro seconds between milli seconds

    sql - 使用计数表选择重复日期的查询

    .net - 在 .Net 中设置计划任务

    jquery - 无法 POST 到 IHTTPHandler 类,Access-Control-Allow-Origin 不允许来源

    .net - 在全局Application_Error中清除 session

    .NET 应用程序未检测到代理 - 当代理设置为自动发现时

    .net - .NET 中何时使用锁 vs MemoryBarrier

    java - 在Android中将日期格式转换为另一种日期?

    循环模型处理器调度中的资源分配算法