我正在尝试获得两个不同时间示例的小时差。我从数据库中以:datetime列的形式获取这些值我如何做到这一点,使它在计算中包括月份和年份,同时忽略或舍入分钟?这只能手动完成还是有一个功能来完成?
:datetime
vecaoik11#
((date_2 - date_1) / 3600).round
或
((date_2 - date_1) / 1.hour).round
dojqjjoe2#
在https://rubygems.org/gems/time_difference上尝试Ruby的Time Difference gem
start_time = Time.new(2013,1) end_time = Time.new(2014,1) TimeDifference.between(start_time, end_time).in_years
lmyy7pcs3#
这工作得很好,例如自用户创建帐户以来的小时数
(Time.parse(DateTime.now.to_s) - Time.parse(current_user.created_at.to_s))/3600
gcuhipw94#
您可以使用名为time_diff的gem以非常有用的格式获得时差
k4ymrczo5#
Rails 6.1引入了新的ActiveSupport::Duration转换方法,如in_seconds、in_minutes、in_hours、in_days、in_weeks、in_months和in_years。因此,现在,您的问题可以解决为:
date_1 = Time.parse('2020-10-19 00:00:00 UTC') date_2 = Time.parse('2020-10-19 03:35:38 UTC') (date_2 - date_1).seconds.in_hours.to_i # => 3
这里是a link to the corresponding PR。
xu3bshqb6#
您可以使用Rails的方法distance_of_time_in_words
distance_of_time_in_words
distance_of_time_in_words(starting_time, ending_time, options = {include_seconds: true })
luaexgnf7#
在Rails中,现在有一种更自然的方式来实现这一点:
> past = Time.now.beginning_of_year 2018-01-01 00:00:00 +0100 > (Time.now - past) / 1.day 219.50031326506948
7条答案
按热度按时间vecaoik11#
或
dojqjjoe2#
在https://rubygems.org/gems/time_difference上尝试Ruby的Time Difference gem
lmyy7pcs3#
这工作得很好,例如自用户创建帐户以来的小时数
gcuhipw94#
您可以使用名为time_diff的gem以非常有用的格式获得时差
k4ymrczo5#
in_hours(Rails 6.1+)
Rails 6.1引入了新的ActiveSupport::Duration转换方法,如in_seconds、in_minutes、in_hours、in_days、in_weeks、in_months和in_years。
因此,现在,您的问题可以解决为:
这里是a link to the corresponding PR。
xu3bshqb6#
您可以使用Rails的方法
distance_of_time_in_words
luaexgnf7#
在Rails中,现在有一种更自然的方式来实现这一点: