代表重复的日期

时间:2008-12-10 21:17:24

标签: date

重复日期:

结算周期有很多不同的格式,例如:“本月的第一个”,“本月的第三个星期五”,或“本月13日之后的第21个星期日或之后的第一个工作日”(谢谢签证!)。我的目标是能够在一个易于解析的数据库文本字段中表示这些不同的计费周期。

2 个答案:

答案 0 :(得分:1)

你忘了周末处理。如果我的账单在周日到期,我希望它在周五出现。那种事。我认为有三种可能性:

  1. 总是在周末之前
  2. 总是在周末之后
  3. 如果是星期六,星期五,如果是星期日,星期一

答案 1 :(得分:0)

当前解决方案:

YYYY/MM/DD+YY/MM/DD+DOW
  • 所有块(由+分隔)都是可选的,以及每个块的所有部分。
  • 第一个块表示开始日期
    • 如果空白 - 表示今天
    • 如果缺少部分 - 表示全部...即“// 12”将表示每个月的第12个月。
    • 否定表示从期末开始计算..即“// - 1”表示该月的最后一天
    • 超支进入下个月,即“// 40”将在本月的第一个月后40天
  • 第二个块表示重复之间的日期变化
    • 如果为空白 - 设置日期(从第一个块开始)
    • 添加当前部分 - 即“/ 1 /”表示在给定的开始日期之后的每个月
  • 第三个块表示应将计算日期移动到的星期几
    • 可用[m,t,w,r,f,s,d,b](一周7天,“营业日”)

计算:

  • 计算从第一个块中指定的日期开始,用添加记录的日期填写缺失的部分。
  • 然后添加DOW以获得有效的开始日期。这是活动的第一个日期。
  • 通过将第二个块添加到最后计算的第一个块并添加DOW以获得下一个日期来计算下一个日期。

示例:

  • 2008年3月12日 - “2008/3/12”
  • 每个月的第一个月 - “// 1 + / 1 /”
  • 每个月的第三个星期五 - “// 21 + / 1 / + f”
  • 本月13日或之后的第21个工作日 - “// 34 + / 1 / + b”
  • 从今天起每两周一次 - “+ // 14”
  • 从3月开始的每隔一个月的最后一天 - “/ 3 / -1 + / 2 /”