Je me demandais s'il existait une méthode intégrée dans Ruby qui me permet de convertir des temps au format hh: mm: ss. sss à millisecondes et vice versa. Étant donné que j'ai besoin de faire quelques calculs, j'ai supposé que la conversion en millisecondes serait le moyen le plus facile de le faire. Dites-moi si je me trompe ici :)Convertir des durées en Ruby - hh: mm: ss.sss en millisecondes et vice versa
Répondre
Que pensez-vous de cela?
a=[1, 1000, 60000, 3600000]*2
ms="01:45:36.180".split(/[:\.]/).map{|time| time.to_i*a.pop}.inject(&:+)
# => 6336180
t = "%02d" % (ms/a[3]).to_s << ":" <<
"%02d" % (ms % a[3]/a[2]).to_s << ":" <<
"%02d" % (ms % a[2]/a[1]).to_s << "." <<
"%03d" % (ms % a[1]).to_s
# => "01:45:36.180"
Comme vous ignorez complètement la date et si vous avez des nombres supérieurs à 24 en nombre d'heures, peut-être que les classes Ruby existantes ne vous conviennent pas (du moins celles de la norme lib).
En fait, il existe quelques méthodes qui pourraient être utiles: time_to_day_fraction et day_fraction_to_time, mais pour une raison quelconque, elles sont privées (au moins dans 1.9.1).
Vous pouvez soit les singes-patch pour les rendre publics, ou tout simplement copier-coller leur application à votre code:
def time_to_day_fraction(h, min, s)
Rational(h * 3600 + min * 60 + s, 86400) # 4p
end
def day_fraction_to_time(fr)
ss, fr = fr.divmod(Rational(1, 86400)) # 4p
h, ss = ss.divmod(3600)
min, s = ss.divmod(60)
return h, min, s, fr
end
Ils travaillent avec Rational
classe, de sorte que vous pouvez calculer facilement avec eux.
Si j'ajoute les millisecondes, cela devrait fonctionner. Je vais essayer ça plus tard. Merci :) – herrherr
Cela fonctionne déjà avec les millisecondes, il vous suffit de passer des secondes comme Float ou Rational ('time_to_day_fraction (1,45,22.345)'). –
Ne fonctionne pas avec un flotteur, j'obtiens "une méthode non définie' gcd '". – herrherr
Convert seconds into HH:MM:SS in Ruby
t = 323 # seconds
Time.at(t).utc.strftime("%H:%M:%S")
=> "00:03:56"
- 1. conversion de chaîne représentant le format HH: MM: SS.sss en format HH: MM: SS.ssssss en python
- 2. convertir l'image en matrice et vice versa?
- 3. Convertir les pixels en pouces et vice versa en C#
- 4. Comment convertir jj-mm-aaaa HH: mm: ss en aaaa-MM-jj HH: mm: ss en utilisant JSP
- 5. Décimal en binaire (et vice-versa)
- 6. Comment convertir double/binaire et vice versa?
- 7. convertir l'objet NSDictionary en objet NSData et vice-versa
- 8. Bibliothèques pour convertir xml en JSON et vice versa
- 9. Convertir la chaîne en entier et Vice-Versa
- 10. Comment convertir un nombre décimal en binaire et vice versa
- 11. Convertir une date DD-MM-YY et HH: MM vars en RFC-822 en utilisant PHP
- 12. Comment puis-je convertir hh: mm: ss en hh: mm dans SQL Server?
- 13. Fusion de classe en chaîne et vice versa en Java
- 14. Convertir Secondes Entier Pour HH: MM, iPhone
- 15. RDLC Expression à convertir en secondes hh: mm: ss
- 16. Comment convertir un nombre décimal en temps ou vice versa
- 17. Comment puis-je convertir aaaa-mm-jj hh: mm: ss en UTC en Perl?
- 18. Comment faire pour convertir la date formatée "YYYY/MM/DD" en une date de type VARIANT et vice-versa
- 19. Object to string et Vice Versa
- 20. Convertir les entités HTML à Unicode et vice versa
- 21. JavaScript Ajouter hh: mm + hh: mm pour obtenir nouveau hh: mm
- 22. Changer les pixels noirs en blanc et vice versa
- 23. Comment convertir des secondes en HH: MM: SS en utilisant T-SQL
- 24. Conversion de DOMTimeStamp en HH localisé: MM: SS MM-JJ-AA via Javascript
- 25. Comment puis-je convertir un caractère en nombre entier en Python et vice versa?
- 26. Comment convertir une gemme en plugin en rubis sur rails et vice versa?
- 27. Comment puis-je convertir Xml en JSON et vice versa en C#
- 28. Comment puis-je convertir une chaîne en une chaîne codée en UTF-8 et vice-versa?
- 29. Comment convertir une chaîne en un nombre, et vice-versa en C++?
- 30. Chaîne à octet [] et vice versa?
Quels sont les calculs que vous devez faire? La classe Ruby 'DateTime' est très 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é". En fonction de ce temps, je devrais calculer le temps théorique à 100% d'intensité. Par souci d'exhaustivité: ces délais ne sont pas liés à une certaine date. – herrherr