提问人:Priyanshu0007 提问时间:11/13/2022 最后编辑:Priyanshu0007 更新时间:11/14/2022 访问量:135
在 ruby on rails 中将 datetime 转换为 time 对象
Convert datetime to time object in ruby on rails
问:
我有一个这样的时间
“estimatedTime”: “2022-11-09T22:59:00Z”
作为 json,它被解析为 datetime 并保存在数据库中 (t.datetime “estimated_time”)。
我想找出此估计时间与当前时间(以小时为单位)之间的差异。
目前我正在使用
时间.now.utc
它为我提供了当前时间作为 Time 对象。
请建议如何解决此问题并找出它们之间的区别。首先,我不太清楚从json到datetime的转换会是什么样子。此外,我也对这个日期时间将如何转换为时间对象以找到差异感到困惑。我是 rails 和 ruby 的新手,所以我很困惑。
红宝石 2.7.5p203 轨道 4.2.11
我尝试了各种功能,但它导致了更多关于这里应该做什么的困惑。
答:
0赞
max
11/14/2022
#1
您无需在此处进行任何转换。只需在 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::D uration
将秒转换为小时或任何其他时间单位:
irb(main):012:0> (Time.current - 1.day.ago).round.seconds.in_hours
=> 24.0
Rails 还具有内置的time_ago_in_words
方法,可以使您的视图变得人性化。
评论