首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节假日表设计

节假日表设计
EN

Software Engineering用户
提问于 2015-06-29 02:55:11
回答 2查看 4.4K关注 0票数 4

我正在创建一个存储假日和事件的系统。我对静态日期的模式有一个基本的理解(例如,每23次)。

我的麻烦在于相对日期(即:三月的第三个星期五)。

对于静态日期,我们可以安全地得到如下所示的模式:

代码语言:javascript
复制
+----------+--------------+
| Col Name |     Type     |
+----------+--------------+
| Id       | Int          |
| Name     | varchar(255) |
| Month    | Int          |
| Day      | Int          |
+----------+--------------+

如何在此架构中添加相对日期?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2015-06-29 03:42:20

你所拥有的不够灵活。

最基本的要求是你需要能够表达以下内容:

  • 美国阵亡将士纪念日是五月的最后一个星期一。
  • 美国的感恩节是十一月的第四个星期四。
  • 圣诞节是12月25日。
  • 复活节是。也许只有刮维基百科

表达这一点的一种简单方法是为定义假日的可能方法添加字段:

  • 月份
  • 一周中的一天
  • 月中的一周(用负数倒计时,例如阵亡将士纪念日)
  • 月中的一天

这并不理想,因为一个人可以很容易地把坏的数据(例如星期一,第一周和第25天),但它是简单和容易理解的。

我在其他地方看到了定义假日的其他方法,但它们基本上需要实现一个非常复杂且容易被误用的规则引擎。这些庞然大物有一个坏名声,这是很好的收入,但有时他们真的是最好的工具工作。

票数 3
EN

Software Engineering用户

发布于 2015-06-29 03:44:21

我认为最好把活动/假日的天数存起来。我在澳大利亚看了一眼皇后区的生日,每到六月的第二个星期一,它就不会继续到下个月了。对于大多数澳大利亚人来说,接受西澳大利亚是女王的生日。在西澳大利亚,女王的生日是九月的第五个星期一,但有时也是十月。

考虑到你的问题,我认为这将是有理由存储的一天的假日将在一个基准月份。如果超出基月份,请移动到下一个月并继续计数。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/288139

复制
相关文章

相似问题

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