我有一个时间
"estimatedTime"2022 - 11 - 09 - t22:59:00z"
作为json,它被解析成datetime并保存在数据库中(t.d etime "estimated_time")。
我想找出这个估计时间和当前时间之间的差值,以小时为单位。
当前我正在使用
获取当前时间Time.now.utc
将当前时间作为时间对象。
请建议如何解决这个问题,并找出两者的区别。首先,我不太清楚从json到datetime的转换会是什么样子。此外,我也很困惑这个日期时间将如何转换为时间对象来找到差异。我是rails和ruby的新手,所以我很困惑。
ruby 2.7.5p203Rails 4.2.11
我已经尝试了各种函数,但是它导致了更多的混乱,不知道这里应该做什么。
这里不需要进行任何转换。只需在Time/DateTime上使用-
(minus)方法,该方法以秒为单位将两个时间之间的差异作为浮点数:
irb(main):013:0> Time.current - 1.hour.ago
=> 3599.9999717 # The rounding error is inherent to floats
即使other是DateTime或activessupport::TimeWithZone,该方法也有效。
然后可以使用ActiveSupport::Duration
将秒转换为小时或任何其他时间单位:
irb(main):012:0> (Time.current - 1.day.ago).round.seconds.in_hours
=> 24.0
Rails也有一个内置的time_ago_in_words
方法来人性化的时间视图。