以可比较的方式用不同单位表示时间范围

问题描述:

我有一些具有寿命属性的Event对象。我有不同类型的活动,每个活动都有不同的生命周期和潜在的不同单位(例如4-10小时,5-8周,1个月 - 2年)。我想将这些范围存储为统一且可比的数据类型,但我不确定我的最佳选择是什么。理想情况下,我希望能够浏览活动列表并查找所有可持续3小时,1周,2个月等的内容。以可比较的方式用不同单位表示时间范围

+0

您是否找到解决问题的方法? – Ivan

您遇到的问题是比较相同“物质” (即时间)还有不同的单位。这将是value object的绝佳选择。值对象不是JavaScript中的常见模式,但它们同样适用,并且是域逻辑的好地方。 This article是一个很好的使用JavaScript对象的值对象。

  • 通过定义JavaScript函数来创建“类”。

  • 其中存储寿命值以您使用的最小单位(小时)计算。

  • 创建几个内部方法,根据单位类型获取和设置此值(例如,乘以168周以获得小时数)。在进入这些单位时,您可能想四舍五入到最近的周/月/年。

  • 创建方法来比较以小时为单位的值与以小时为单位的另一个实例的值。

这将允许您比较独立于存储寿命的时间单位的事件。