在ruby on rails中将datetime对象转换为time对象



我有一个时间

"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方法来人性化的时间视图。

最新更新