2011-08-04 6 views
3

MISE À JOUR: Je suis en train de mettre à jour la question afin de refléter la solution complète. En utilisant le joyau de time_diff mentionné ci-dessous, le code suivant a fonctionné.calculer la différence de temps en jours, heures et minutes

code:

cur_time = Time.now.strftime('%Y-%m-%d %H:%M') 
Time.diff(Time.parse('2011-08-12 09:00'), Time.parse(cur_time)) 

Merci, Brett.

Répondre

8

J'ai utilisé time_diff pour réaliser ce genre de chose facilement avant, vous pouvez vouloir vérifier.

+0

Je reçois "méthode non définie' gsub! ' pour 2011-08-04 11:14:24 -0400: Temps ". J'essaie de déterminer quel fichier placer "require" time_diff "" et "time_diff_components = Time.diff (start_date_time, end_date_time)". Ceci est compatible avec les rails 3 aussi je suppose. – Jay

+0

je place le require dans application.rb avant le module et le "time_diff ..." dans le module ... non? ... hmm ... ça ne marche pas. – Jay

+2

Je cours rails3.1.rc4 - mettre 'gem 'time_diff'' dans mon Gemfile était assez bon, je ne devais pas l'exiger explicitement. La version 0.2.1 se porte très bien pour moi. –

14

Sans l'aide d'un petit bijou externe, vous pouvez facilement obtenir des différences entre les dates en utilisant une méthode comme ceci:

def release(time) 
    delta = time - Time.now 

    %w[days hours minutes].collect do |step| 
    seconds = 1.send(step) 
    (delta/seconds).to_i.tap do 
     delta %= seconds 
    end 
    end 
end 

release(("2011-08-12 09:00:00").to_time) 
# => [7, 17, 37] 

qui retourne un tableau de jours, heures et minutes et peut être facilement étendu pour inclure des années, mois et secondes aussi:

def release(time) 
    delta = time - Time.now 

    %w[years months days hours minutes seconds].collect do |step| 
    seconds = 1.send(step) 
    (delta/seconds).to_i.tap do 
     delta %= seconds 
    end 
    end 
end 

release(("2011-08-12 09:00:00").to_time) 
# => [0, 0, 7, 17, 38, 13] 
+1

Hé, @ ream88. Votre solution a également fonctionné. J'aime la gem tho. +1 pour votre aide. – Jay

+0

gentil! aimer –

Questions connexes