Czy jest jakiś sposób na użycie format
metody moment.js na obiektach czasu trwania? Nigdzie nie mogę go znaleźć w dokumentach i nie wydaje się, aby był atrybutem obiektów czasu trwania.
Chciałbym móc zrobić coś takiego:
var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')
Ponadto, jeśli istnieją inne biblioteki, które mogą łatwo dostosować się do tego rodzaju funkcjonalności, byłbym zainteresowany rekomendacjami.
Dzięki!
javascript
momentjs
mvanveen
źródło
źródło
HH:mm:ss
podam00:00:23
w moim poprzednim przykładzie. więc po prostu niewłaściwa obudowa od strony GodzinyOdpowiedzi:
Zastanawiamy się nad dodaniem pewnego rodzaju formatowania do czasów trwania w mom.js. Zobacz https://github.com/timrwood/moment/issues/463
Kilka innych bibliotek, które mogą pomóc, to http://countdownjs.org/ i https://github.com/icambron/twix.js
źródło
Spójrz na JSFiddle
źródło
DDD HH:mm:ss.SSS
(gdzieDDD
jest dzień roku) wyświetla się,1
kiedy chcę0
. Jakaś szybka naprawa tego?przelicz czas trwania na ms, a następnie na moment:
źródło
.format('HH:mm:ss')
. Zobacz dokumentacjęUżyj tej wtyczki Format Moment Duration .
Przykład:
źródło
hh:mm:mm
i mam tylko 10 sekund, pokazuje to10
zamiast00:00:10
(nawet przy włączonej forcelength) Jeśli nie formatuje ... to należy to nazwać czymś innym, formaty powinny być znormalizowany.{ trim: false }
go określisz , przestanie to działać .const duration = moment.duration(value, 'seconds');
niż można sformatować za pomocą:moment.utc(duration.as('milliseconds')).format('HH:mm:ss').toString();
Użyj tego wiersza kodu:
źródło
źródło
Najlepszy scenariusz dla mojego konkretnego przypadku użycia to:
Poprawia się to po odpowiedzi @ Wilsona, ponieważ nie ma on dostępu do prywatnych danych wewnętrznych _data.
źródło
Nie potrzebujesz .format. Użyj takich czasów:
Znalazłem to rozwiązanie tutaj: https://github.com/moment/moment/issues/463
EDYTOWAĆ:
I z wypełnieniem na sekundy, minuty i godziny:
źródło
duration = moment.duration(7200, 'seconds'); withPadding(duration);
powiedzą „00:00”.if (duration.asDays() > 0) { return 'at least one day';
- czy czytam to poprawnie?Używam:
I dostaję „09:30” w var str.
źródło
_data
jest własnością wewnętrzną i może ulec zmianie bez ostrzeżenia.moment(moment.duration(1200000)._data).format('hh:mm:ss')
zwróci 12:20 zamiast 00:20h
jest w zakresie 1-12, więc jest raczej przewidywalna.H
Zamiast tego użyj docs - tokeny godzinmoment.utc(...).format("HH:mm");
jeśli diff jest chwilą
źródło
Jeśli chcesz użyć innej biblioteki javascript, numeral.js może sformatować sekundy w następujący sposób (przykład to 1000 sekund):
źródło
Używam klasycznej funkcji formatowania w następujących przypadkach:
Jest to hack, ponieważ różnicę czasu traktuje się jako datę standardową, wczesną datę epoki, ale nie ma to znaczenia dla naszego celu i nie potrzebujesz żadnej wtyczki
źródło
Jeśli wszystkie godziny muszą być wyświetlane (więcej niż 24) i jeśli „0” przed godzinami nie jest konieczne, formatowanie można wykonać za pomocą krótkiego wiersza kodu:
źródło
Na podstawie odpowiedzi ni-ko-o-kin :
źródło
Aby sformatować czas trwania momentu na ciąg
źródło
jeśli używasz kątowej, dodaj to do filtrów:
przykład użycia
źródło
Moje rozwiązanie, które nie wymaga żadnej innej biblioteki i działa z diff> 24h
źródło
Co z rodzimym javascript?
źródło
Użyj formatu czasu trwania .
Client Framework (np. React)
Serwer (node.js)
źródło
Wydruki:
źródło
źródło
Możesz użyć numeral.js do sformatowania czasu trwania:
źródło
Można tego użyć, aby uzyskać pierwsze dwa znaki jako godziny, a ostatnie dwa jako minuty. Ta sama logika może być zastosowana do sekund.
źródło
moment.duration(x).format()
został wycofany. Możesz użyć,moment.utc(4366589).format("HH:mm:ss")
aby uzyskać pożądaną odpowiedź.źródło
Jak poprawnie używać czasów mom.js? | Użyj moment.duration () w kodzie
Najpierw musisz zaimportować
moment
imoment-duration-format
.Następnie użyj funkcji czasu trwania. Zastosujmy powyższy przykład: 28800 = 8 rano.
Ell No cóż, nie występuje błąd powyżej typu. 🤔 Czy masz odpowiednią wartość 8:00? Nie… otrzymana wartość to 8:00 a. Format Moment.js nie działa tak, jak powinien.
Solution Rozwiązaniem jest przekształcenie sekund w milisekundy i wykorzystanie czasu UTC.
W porządku, teraz mamy 8:00. Jeśli chcesz 8 rano zamiast 8:00 czasu integralnego, musimy zrobić RegExp
źródło
Musiałem to zrobić do pracy jako wymóg wyświetlania godzin w tym formacie. Na początku próbowałem tego.
Jednak wszystko w ciągu 24 godzin i godziny resetują się do 0. Ale minuty i sekundy były dokładne. Wykorzystałem więc tylko tę część minut i sekund.
Teraz potrzebuję tylko całkowitej liczby godzin.
Aby uzyskać format, który wszyscy chcemy, po prostu go sklejamy.
jeśli
totalMilliseconds
jest894600000
to wróci249:30:00
.Mam nadzieję, że to pomogło. Zostaw wszelkie pytania w komentarzach. ;)
źródło
Jeśli używasz Angular> 2, stworzyłem fajkę zainspirowaną odpowiedzią @ hai-alaluf.
źródło
To działa dla mnie:
źródło