令人困惑的 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 小时,具体取决于夏令时的变化。
听起来您不需要此功能,在这种情况下存储秒数可能更简单。
我从 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 小时,具体取决于夏令时的变化。
听起来您不需要此功能,在这种情况下存储秒数可能更简单。