令人困惑的ActiveSupport ::持续时间计算结果

时间:2015-10-19 21:34:35

标签: ruby-on-rails ruby duration activesupport

我从ActiveSupport::Duration(Rails 4.2.4 + ruby​​ 2.2.1)中理解这一点:

main > (1.month + 2.days).parts
[[:months, 1], [:days, 2]]

我不明白这一点:

main > (1.hour + 35.minutes).parts
[[:seconds, 3600], [:seconds, 2100]]

ActiveSupport::Duration处理数月和数天的处理时间和秒数是否都不合理? ActiveSupport::Duration上的文档相当稀疏(我似乎无法找到更好的文档)。

我的主要目标是在Rails模型中存储持续时间(小时和分钟)。我应该忘记ActiveSupport::Duration并只存储秒,然后进行自己的计算吗?

1 个答案:

答案 0 :(得分:1)

ActiveSupport与小时,分钟和秒分开处理数月和日(和年)。

这是因为一小时(或23分钟)的持续时间始终是精确的秒数。另一方面,一个月是不同的天数,一天可以有23,24或25小时,具体取决于夏令时的变化。

听起来你不需要这个功能,在这种情况下,存储几秒钟可能更简单。