我遇到问题的第一件事是,虽然我在我的数据库中定义:
add_column :patients, :wartezeit, :time
在我的控制器中:
@patient.update_columns(wartezimmer: true, wartezeit: Time.now)
我为任何patient.wartezeit
获得了这样的输出:
2000-01-01 13:48:18 UTC
我的意思是这是日期时间!我是正确的?我错了什么?
接下来,我尝试获取patient.wartezeit
和Time.now
:
((Time.now - f.wartezeit) / 60).to_i + " minutes"
不知怎的,我得到完全错误的分钟数!可能是因为patient.wartezeit
被定义为Datetime。
也许有人也对我有一个想法,我如何更改我的代码,以便它不仅显示分钟!因为现在我得到了例如:80 minutes
但是1 hour 20 minutes
更有意义!感谢
答案 0 :(得分:1)
你太努力了; Rails中的ActiveSupport使这些东西更容易。
(Time.now.minutes - f.wartezeit.minutes).to_s + ' minutes'
而且,是的,Time
不是“一天中的时间”,而是一个“所有时间中的时刻”对象。
答案 1 :(得分:0)
患者。 wartezeit是一个Time
元素,datetime元素看起来像Sun, 17 Nov 2013 08:11:08 -0700
- 至于获取它的显示方式,我通常会使用一个gem。时间和日期的解析和减法很容易搞砸,所以为了保持一致性,我使用相同的东西。
https://github.com/abhidsm/time_diff
这将让你做到
diff = Time.diff( f.wartezeit, Time.now, '%y, %M, %w, %d and %H %N %S')
diff[:diff]
会渲染类似
的内容12 hours 20 minutes 0 seconds