8
votes

Convertir des durées à Ruby - HH: MM: SS.SSS à Millisecondes et vice versa

Je me demandais s'il y a une méthode intégrée à Ruby qui me permet de convertir des temps de tour au format de HH: MM: Ss.SSSS à millisecondes et inversement. Depuis que je dois faire des calculs avec cela, j'ai supposé que la conversion des millisecondes serait la meilleure façon de le faire. Dis-moi si je me trompe ici :)


2 commentaires

Quels calculs vous devez faire? Ruby DateTime La classe est plutôt pratique pour la plupart des types de calculs.


Ajouter et soustraire en général. En plus de cela, ces temps sont liés à une certaine intensité, par exemple: "02: 25,700 à 70% d'intensité". D'après ce temps, je devrais calculer le temps théorique à 100% d'intensité. Par souci de complétude: ces temps ne sont pas liés à une certaine date.


3 Réponses :


3
votes

Comme vous ignorez la date au total et que vous disposez éventuellement des chiffres supérieurs à 24 heures, peut-être que les classes de rubis existantes ne vous conviennent pas (au moins des celles de la LIB standard).

En fait, il y a Couple de méthodes qui pourraient être utiles: TIME_TO_DAY_FRACTION et jour_fraction_to_time , mais pour une raison quelconque, ils sont privés (au moins en 1.9.1).

Vous pouvez les patcher singe pour les rendre publics ou simplement copier leur implémentation sur votre code: xxx

Ils fonctionnent avec rationnel classe, afin que vous puissiez calculer facilement avec eux.


3 commentaires

Si j'ajoute les millisecondes, cela devrait fonctionner. Va essayer cela plus tard. Merci :)


Cela fonctionne déjà avec les millisecondes, vous venez de passer des secondes en tant que flotteur ou rationnel ( time_to_day_fraction (1,45,22.345) ).


Vous avez raison, désolé, je n'ai essayé que dans Ruby 1.9.1 et supposé que cela fonctionnerait également dans les versions précédentes. Eh bien, vous pouvez utiliser le paramètre Rational, ajouter des paramètres de milliseconds aux méthodes, ou utilisez les méthodes de Jonas. ;)



8
votes

Que diriez-vous de cela? XXX


2 commentaires

M'a pris un peu de temps pour le comprendre pleinement, mais travaille comme un charme :) Merci pour ça.


Désolé, je devrais mettre des commentaires là-bas au lieu du code de golf.



0
votes

Convertir des secondes en HH: MM: SS In Ruby

t = 323 # seconds
Time.at(t).utc.strftime("%H:%M:%S")
=> "00:03:56"


0 commentaires