Zastanawiam się, czy istnieje wbudowana metoda w Rubim, która pozwala mi konwertować czasy okrążeń w formacie hh: mm: ss. sss do milisekund i na odwrót. Ponieważ muszę wykonać z nim kilka obliczeń, założyłem, że najłatwiej będzie to zrobić z konwersją na milisekundy. Powiedz mi, czy się mylę :)Konwertuj czasy trwania w Ruby - hh: mm: ss.sss do milisekund i na odwrót
7
A
Odpowiedz
8
Co powiesz na to?
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"
3
Ponieważ całkowicie ignorujesz datę i prawdopodobnie masz liczbę większą niż 24 jako liczbę godzin, być może istniejące klasy Ruby nie są dla Ciebie odpowiednie (przynajmniej te ze standardu lib).
W rzeczywistości istnieje kilka metod, które mogą być pomocne: time_to_day_fraction i day_fraction_to_time, ale z jakiegoś powodu są prywatne (przynajmniej w wersji 1.9.1).
więc można albo małpa-załatać je do ich publikowania, lub po prostu skopiować i wkleić ich realizację do kodu:
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
Pracują z Rational
klasy, więc można obliczyć łatwo z nimi.
0
Convert seconds into HH:MM:SS in Ruby
t = 323 # seconds
Time.at(t).utc.strftime("%H:%M:%S")
=> "00:03:56"
Powiązane problemy
- 1. Jak przekonwertować GG: mm: ss.SSS do milisekund?
- 2. Konwertuj liczby całkowite na ciąg "hh: mm"
- 3. Jak przekonwertować ciąg HH: MM na czas trwania Jody?
- 4. Konwersja Okres od formacie "hh: mm: ss" na "hh: mm"
- 5. Błąd TimeSpan.ToString ("hh: mm")
- 6. TimeSun ToString "[d.] Hh: mm"
- 7. Konwertuj piksele na cale i na odwrót w C#
- 8. Sposób formatowania czasu trwania jako HH: mm w nowych arkuszach Google
- 9. Konwertuj z długiej na dwie wartości int i na odwrót
- 10. konwersja yyyy-mm-dd hh: mm: ss na yyyy-mm-dd w sql
- 11. Dlaczego ffmpeg zgłasza różne czasy trwania?
- 12. Konwertuj GG: MM: SS.mm na sekundy w bashie
- 13. Konwersja (RRRR-MM-DD-HH: MM: SS) Data Data
- 14. java.text.ParseException: Unparseable date: yyyy-MM-dd HH: mm: ss.SSSSSS
- 15. Dodaj minuty do czasu (hh: mm) w excel vba
- 16. Python: konwertowanie sekund hh: mm: ss
- 17. Dlaczego ktoś chciałby użyć ruby na pytonie i na odwrót?
- 18. Jak przekonwertować wartość godziny dziesiętnej na hh: mm: ss
- 19. Czas na ciąg z HH: MM: Format SS (C-programowanie)
- 20. Jak przekonwertować datę w formacie "YYYY-MM-DD hh: mm: ss" na UNIX timestamp
- 21. Konwersja hh: mm: ss na minuty przy użyciu Pythona Pythona
- 22. format datetime do YYYY-MM-DD HH: mm: ss w moment.js
- 23. Jak przekonwertować gg: mm: ss na hh: mm w SQL Server?
- 24. Konwertuj zmiennoprzecinkowe na GG: MM format
- 25. C# Jak przekonwertować Environment.TickCount na HH: mm: ss: ms
- 26. Konwertuj datę i godzinę na GMT i na odwrót w PHP .....?
- 27. Konwertuj UTC Milisekund na DATETIME w serwerze SQL
- 28. C - Konwersja time_t na łańcuch z formatu YYYY-MM-DD HH: MM: SS
- 29. Jak przekonwertować sekundy w tym formacie "HH: mm: ss"
- 30. uzyskać różnicę czasu w HH: format MM php
Która obliczenia trzeba zrobić? Klasa Ruby 'DateTime' jest bardzo przydatna w przypadku większości typów obliczeń. –
Dodawanie i odejmowanie w ogóle. Oprócz tego czasy te są związane z pewną intensywnością, na przykład: "02: 25.700 przy 70% intensywności". Na podstawie tego czasu musiałbym obliczyć teoretyczny czas na 100% intensywności. Ze względu na kompletność: czasy te nie są związane z określoną datą. – herrherr