令人困惑的 ActiveSupport::Duration 计算结果

Confusing ActiveSupport::Duration calculation results

我从 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 并只存储秒数然后自己计算吗?

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

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

听起来您不需要此功能,在这种情况下存储秒数可能更简单。