Jak przekonwertować sekundy na HH-MM-SS
ciąg za pomocą JavaScript?
javascript
date
time
date-format
time-format
Hannoun Yassir
źródło
źródło
Odpowiedzi:
Nie znasz danych ? to trzeba wiedzieć.
Używając datejs, po prostu napisz coś takiego:
--aktualizacja
Obecnie date.js jest przestarzały i nie jest obsługiwany, więc użyj „ Moment.js ”, co jest znacznie lepsze, jak wskazał TJ Crowder.
--aktualizacja 2
Skorzystaj z @ Frank's rozwiązania jedno liniowego:
To zdecydowanie najlepsze rozwiązanie.
źródło
TypeError: Object [object Date] has no method 'clearTime'
.Możesz to zrobić bez zewnętrznej biblioteki JavaScript za pomocą metody JavaScript Date, takiej jak:
Lub, zgodnie z komentarzem @Frank ; jedna wkładka:
źródło
new Date(SECONDS * 1000).toISOString().substr(11, 8);
Object doesn't support property or method 'toISOString'
Nie sądzę, aby jakakolwiek wbudowana funkcja standardowego obiektu Date mogła zrobić to dla ciebie w sposób wygodniejszy niż tylko matematyka.
Przykład:
Pokaż fragment kodu
źródło
0.05
dohours
zmiennej. Umieściłem go w środku,parseInt
który naprawił go w moim przypadku, ale nie sądzę, żeby to wszystko było trafne. Mimo to pomogło mi to, dzięki!parseInt
, to jest do analizowania ciągów , a nie manipulowania liczbami.Math.floor
będzie tutaj odpowiednia operacja.seconds = Math.floor(totalSeconds % 60);
. Właśnie tam mam wynik dziesiętny.totalSeconds % 60
może mieć część ułamkową tylko wtedy, gdytotalSeconds
ma część ułamkową. To, czy chcesz zabrać głos, będzie zależeć od tego, czy chcesz je utracić, czy zachować. (Inne operacje podłogowe robimy nie stracić żadnych informacji, ponieważ są one po prostu czyszcząc się dane, które zakończy się wminutes
aseconds
.)console.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
Wiem, że to trochę stare, ale ...
ES2015:
Wyprowadzi:
źródło
Jak zauważył Cleiton w swojej odpowiedzi , moment.js może być wykorzystany do tego:
źródło
moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
..format('YYYY DDD HH:mm:ss')
źródło
To załatwia sprawę:
(Źródło stąd )
źródło
możemy sprawić, by ta funkcja była o wiele krótsza i bardziej wyraźna, ale to zmniejsza czytelność, więc napiszemy ją tak prosto, jak to możliwe i tak stabilnie, jak to możliwe.
lub możesz to sprawdzić tutaj :
źródło
Spróbuj tego:
źródło
Oto rozszerzenie klasy Number. Funkcja toHHMMSS () konwertuje sekundy na ciąg hh: mm: ss.
źródło
Łatwa do naśladowania wersja dla noobies:
źródło
Ta funkcja powinna to zrobić:
Bez przekazywania separatora służy
:
jako (domyślny) separator:Jeśli chcesz użyć
-
jako separatora, po prostu przekaż go jako drugi parametr:Zobacz także to skrzypce .
źródło
:
ustawiona jako domyślna dlaseparator
parametru, jak już wyjaśniłem. Odbywa się to za pomocą instrukcjitypeof separator !== 'undefined' ? separator : ':'
. Ponadto, twoja funkcja jest prawie identyczna z moją, z wyjątkiem niektórych kosmetycznych zmian i oba powinny generować ten sam wynik ... z wyjątkiem mojej wersji o wiele lepszej obsługi przeglądarki. Twoja nie będzie działać w ŻADNEJ wersji przeglądarki Internet Explorer lub MS Edge <14.poniżej podano kod, który przekonwertuje sekundy na format hh-mm-ss:
Uzyskaj alternatywną metodę z Konwertuj sekundy na format HH-MM-SS w JavaScript
źródło
Dla specjalnego przypadku GG: MM: SS.MS (eq: „00: 04: 33.637”) stosowanego przez FFMPEG do określenia milisekund .
Przykładowe użycie, licznik czasu transportu milisekund:
Przykładowe użycie powiązane z elementem medialnym
Poza pytaniem te funkcje napisane w php:
źródło
+ "." + p.getMilliseconds()
, używającnew Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
źródło
Chciałem tylko wyjaśnić miłą odpowiedź powyżej:
W drugim wierszu, ponieważ w ciągu 1 godziny jest 3600 sekund, dzielimy całkowitą liczbę sekund przez 3600, aby uzyskać całkowitą liczbę godzin. Używamy parseInt do usuwania dziesiętnych. Jeśli totalSec wynosiłby 12600 (3 i pół godziny), to parsowanie (totalSec / 3600) zwróciłoby 3, ponieważ będziemy mieli 3 pełne godziny. Dlaczego w tym przypadku potrzebujemy% 24? Jeśli przekroczymy 24 godziny, powiedzmy, że mamy 25 godzin (90000 sekund), wówczas moduł modulo ponownie zabierze nas z powrotem do 1, zamiast powrotu 25. Ogranicza wynik w ciągu 24 godzin, ponieważ są 24 godziny w jeden dzień.
Gdy zobaczysz coś takiego:
Pomyśl o tym w ten sposób:
źródło
Wtrącając się do tego starego wątku - OP stwierdził HH: MM: SS i wiele rozwiązań działa, dopóki nie uświadomisz sobie, że potrzebujesz więcej niż 24 godzin na liście. A może nie chcesz więcej niż jednego wiersza kodu. Proszę bardzo:
Zwraca H +: MM: SS. Aby go użyć, po prostu użyj:
... Próbowałem zmusić go do użycia najmniejszej możliwej ilości kodu, aby uzyskać ładne podejście z jedną linią.
źródło
Czy próbowałeś dodać sekundy do obiektu Date?
Przykład: https://jsfiddle.net/j5g2p0dc/5/
Zaktualizowano: brakowało przykładowego linku, więc utworzyłem nowy.
źródło
addSeconds
na obiekcie typu Data jakDate.prototype.addSeconds = function(seconds){...}
. Tak, działa, dziękuję za aktualizację.Oto funkcja konwersji sekund na format hh-mm-ss na podstawie odpowiedzi powtac tutaj
jsfiddle
Przykładowe użycie
źródło
Po przeanalizowaniu wszystkich odpowiedzi i niezadowoleniu się z większości z nich wpadłem na to. Wiem, że spóźniłem się na rozmowę, ale i tak jest.
Tworzę nowy obiekt Date, zmieniam czas na moje parametry, przekształcam obiekt Date na ciąg czasu i usunąłem dodatkowe rzeczy, dzieląc ciąg i zwracając tylko potrzebną część.
Pomyślałem, że podzielę to podejście, ponieważ eliminuje ono potrzebę stosowania wyrażeń regularnych, logiki i matematyki w celu uzyskania wyników w formacie „HH: mm: ss”, a zamiast tego opiera się na wbudowanych metodach.
Możesz zajrzeć do dokumentacji tutaj: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
źródło
Istnieje wiele opcji rozwiązania tego problemu i oczywiste jest, że sugeruje się dobrą opcję, ale chcę tutaj dodać jeszcze jeden zoptymalizowany kod
jeśli nie chcesz sformatowanego zera z liczbą mniejszą niż 10, możesz użyć
}
Przykładowy kod http://fiddly.org/1c476/1
źródło
W jednej linii, korzystając z rozwiązania TJ Crowder:
W jednej linii inne rozwiązanie, które również liczy dni:
Źródło: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276
źródło
źródło
Możesz także użyć poniższego kodu:
źródło
new Date().toString().split(" ")[4];
wynik
15:08:03
źródło
Dla każdego, kto używa AngularJS, prostym rozwiązaniem jest odfiltrowanie wartości za pomocą interfejsu API daty , który konwertuje milisekundy na ciąg oparty na żądanym formacie. Przykład:
Zauważ, że oczekuje to milisekund, więc możesz chcieć pomnożyć timeRemaining przez 1000, jeśli konwertujesz z sekund (jak sformułowano oryginalne pytanie).
źródło
Natknąłem się na przypadek, w którym niektórzy wspominali, że liczba sekund jest większa niż jeden dzień. Oto dostosowana wersja najwyżej ocenianej odpowiedzi @Harish Anchu, która odpowiada na dłuższe okresy:
Przykład:
źródło
Przykład użycia
źródło
Żadna z odpowiedzi tutaj nie spełnia moich wymagań, ponieważ chcę sobie poradzić
Chociaż nie są one wymagane przez PO, dobrą praktyką jest objęcie przypadków skrajnych, szczególnie gdy wymaga to niewielkiego wysiłku.
To całkiem oczywiste, że OP oznacza LICZBĘ sekund, kiedy mówi sekundy . Dlaczego chcesz przypisać swoją funkcję
String
?źródło
secondsToTimeSpan(8991)
zwraca6.00:05:51
, ale myślę, że powinien powrócić00:02:29:51
Użyłem tego kodu wcześniej, aby utworzyć prosty obiekt rozpiętości czasowej:
źródło