2010-07-18 4 views
1

Est-ce que Ruby stdlib a des objets qui représentent la différence entre deux horodatages? En soustrayant deux objets Time l'un de l'autre renvoie un nombre flottant de secondes - y at-il un objet pour cela, avec des méthodes comme hours, minutes etc, et la plupart de décent to_s?Représentation des différences de temps dans Ruby

J'ai codé des méthodes demi-asses depuis trop longtemps, est-ce que je le fais mal?

+3

Pourquoi ne pas écrire la classe correctement une fois et réutiliser à chaque fois que vous en avez besoin? – ezpz

Répondre

3

Pas dans le fichier stdlib, mais il y a un composant Gem que vous pouvez utiliser pour le travail: la gemme duration.

sudo gem install duration 

que vous pouvez utiliser comme ceci:

require "duration" 
a = Time.now 
sleep(5) 
b = Time.now 
duration = Duration.new(b - a) 
# => #<Duration: 5 seconds> 
duration.seconds 
# => 5 
duration.minutes 
# => 0 

et des jours, des heures, des semaines et un tas d'autres méthodes utiles.

Vous pouvez également appliquer des patchs de type heure, date et autres classes date-heure pour renvoyer des objets Durée.

0

Il y a un petit bijou appelé time_diff qui retourne un hachage de différence en année, mois, semaine, jour, heure, minute, seconde

Questions connexes