ruby-on-rails 在ruby on rails中将日期时间转换为时间对象

yeotifhr  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(190)

我有一段时间
“估计时间”:“2022年11月9日22时59分”
作为json,它被解析为日期时间并保存在数据库中(t.日期时间“estimated_time”)。
我想找出此估计时间与当前时间之间的差异(以小时为单位)。
目前我正在使用
Time.now.utc
它将当前时间作为Time对象。
请建议如何解决这个问题,并找出它们之间的区别。首先,我不太清楚从json到datetime的转换是什么样子。另外,我也很困惑这个datetime如何转换成时间对象来找出区别。我是Rails和ruby的新手,所以我很困惑。
红色2.7.5p203导轨4.2.11
我已经尝试了各种功能,但它导致了更多的混乱,应该在这里做什么。

h5qlskok

h5qlskok1#

这里不需要做任何转换,只需要在Time/DateTime上使用-(minus)方法,它会以浮点数的形式给出两个时间之间的秒数差:

irb(main):013:0> Time.current - 1.hour.ago
=> 3599.9999717 # The rounding error is inherent to floats

即使 other 是DateTime或ActiveSupport::TimeWithZone,此操作也有效。
然后,您可以使用ActiveSupport::Duration将秒转换为小时或任何其他时间单位:

irb(main):012:0> (Time.current - 1.day.ago).round.seconds.in_hours
=> 24.0

Rails还有一个内置的time_ago_in_words方法,可以使视图的时间人性化。

相关问题