3

我想获得两个日期之间的确切时间(以天和小时为单位),例如 between Thu Jul 18 11:30:00 +0000 2013Sat Jul 20 10:30:00 +0000 2013。有区别1 day and 23 hours。Rails 的 ActionView 模块包括两个方法

(1) distance_of_time_in_words
(2) distance_of_time_in_words_to_now

但他们会返回结果,比如 1 天或 2 天,我也需要几个小时。

4

4 回答 4

7

如果您不想使用任何宝石,那么您也可以简单地进行以下计算以获得精确的分钟和秒差 -

t1 = Time.now #date1
t2 = (Time.now - 10.hours) #date2

seconds = (t1.to_i - t2.to_i)
days = seconds / 86400;
hours = seconds / 3600;
minutes = (seconds - (hours * 3600)) / 60;
seconds = (seconds - (hours * 3600) - (minutes * 60));
于 2013-11-25T14:42:58.493 回答
6

插件dotiw可能有助于解决这个问题。

dotiw 是 Rails 的一个插件,它覆盖默认的 distance_of_time_in_words 并提供更准确的输出。

于 2013-07-16T14:29:47.870 回答
4

有一个宝石:time_diff

https://rubygems.org/gems/time_diff

它将显示时差,您甚至可以格式化输出。例子:

'%y, %M, %w, %d and %h:%m:%s'将返回:'1 year, 2 months, 3 weeks, 4 days and 12:05:52'

语法也非常简单:

> Time.diff(Time.parse('2010-03-06 12:30:00'), Time.parse('2011-03-07 12:30:30'), '%y, %d and %h:%m:%s')
=> {:year => 1, :month => 0, :week => 0, :day => 0, :hour => 18, :minute => 0, :second => 30, :diff => '1 year and 18:00:30'}

你应该能够从中得到你需要的东西。

快乐编码!

于 2013-07-16T14:27:46.720 回答
1
date_1 = DateTime.parse("Thu Jul 18 11:30:00 +0000 2013")
date_2 = DateTime.parse("Sat Jul 20 10:30:00 +0000 2013")

difference_in_hours =  (date_2.to_time - date_1.to_time) / 60 / 60
于 2013-07-16T14:29:59.083 回答