我想獲得確切的時間在兩個日期之間的幾天和幾小時之間,如Thu Jul 18 11:30:00 +0000 2013
和Sat Jul 20 10:30:00 +0000 2013
之間。有差異1 day and 23 hours
。滑軌模塊的ActionView包含兩個方法確切的日期和時間的兩個日期
(1) distance_of_time_in_words
(2) distance_of_time_in_words_to_now
但是它們返回結果等1天或2天我需要小時也。
我想獲得確切的時間在兩個日期之間的幾天和幾小時之間,如Thu Jul 18 11:30:00 +0000 2013
和Sat Jul 20 10:30:00 +0000 2013
之間。有差異1 day and 23 hours
。滑軌模塊的ActionView包含兩個方法確切的日期和時間的兩個日期
(1) distance_of_time_in_words
(2) distance_of_time_in_words_to_now
但是它們返回結果等1天或2天我需要小時也。
有一個寶石: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'}
你應該能夠得到你需要擺脫這種東西。
快樂編碼!
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年7月18日星期四11:30:00 +0000」和「星期三7月17日06:31:44 + 0000 2013」之間返回「-72.42713155」您能否解釋兩個連續日期之間72小時差異的可能性?請給予提示我如何使它正確工作。 – sumit
上面的代碼應該返回完全'47'。你究竟跑什麼來獲得'-72.42713155'?另外,我在上面更新了我的答案。 – Trip
上面的例子給出了47你是對的。但是,如果你在兩個日期之間的區別比它給出虛假的時間有很大的不同......好吧Thnaks爲你的支持... – sumit
如果你不希望使用任何寶石,那麼你可以簡單地執行下面的計算才能獲得分秒精確相差太大了 -
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));
我面臨的兼容性問題,在創業板「time_diff」 。然而,它安裝成功仍然有兼容性問題,我使用的Rails 2.3.2和紅寶石紅寶石1.8.7。你能幫忙看看這個 – sumit
看來time_diff使用了2010年10月14日發佈的'ActiveSupport v3.0.1'(見'Gemfile.lock'),當你使用的Rails版本在那之前發佈時:2.3.2 3月15,2009年。那裏可能有些不兼容。所以有兩種解決方案:更新Rails或我認爲的寶石本身。 Ruby版本沒有問題(它由gem自己使用)。而且,僅僅爲了您的信息,知道1.8.7不再支持:http://www.ruby-lang.org/zh/news/2011/10/06/plans-for-1-8-7/。希望這可以幫助 ! – achedeuzot
感謝您的解釋.. – sumit