2010-07-23 173 views
16

我想寫一個簡單的函數說幾小時:你如何從日期時間減去?

已經創建了多少時間?

我嘗試:

-time = DateTime.now.hour - (self.created_at.hour) 

有誰知道如何做到這一點的Ruby on Rails的?

+0

這將無法正常工作,因爲你只是比較小時,所以如果超過一天通過它將是不準確的,但否則它應該仍然計算爲一個數字。相反,你可以直接使用'DateTime.now - self.created_at',這會在幾秒鐘內給你時間差。你需要做什麼? – Karl 2010-07-23 00:19:55

+0

這不起作用,因爲除非它的字符串不能從DateTime中減去。如果它是一個字符串,你如何再次顯示它 – Trip 2010-07-23 01:42:07

回答

21

的Rails通常使用Time,不DateTime。你爲什麼不做Time.now - self.created_at?然後,您可以將秒數轉換爲小時數除以3600.

7

您正在尋找time_ago_in_words(from_time,include_seconds = false)函數。下面是從文檔的一些例子:

time_ago_in_words(3.minutes.from_now)  # => 3 minutes 
time_ago_in_words(Time.now - 15.hours)  # => 15 hours 
time_ago_in_words(Time.now)     # => less than a minute 
from_time = Time.now - 3.days - 14.minutes - 25.seconds  # => 3 days 
+4

我不是在尋找單詞。我正在尋找如何從另一個DateTime中減去DateTime – Trip 2010-07-23 01:43:02

+1

在這種情況下,mckeed有正確的答案。 – sosborn 2010-07-23 02:19:40

16

知道了!首先,您必須確保您的數據處於相同的數據中,並將其從Time或DateTime中扣除。我選擇了時間。然後你用Ruby的內置時間方法分割它。這轉換成多少天,但也可以是,1小時。等

(Time.now - self.created_at.to_time)/1.day