2014-04-08 23 views
19

Jestem nowym użytkownikiem Momentjs. Próbuję go użyć do konwersji milisekund na godziny i minuty. Poniżej x oznacza milisekundKonwertuj milisekundy na godziny i minuty, używając aplikacji Momentjs

x = 433276000 
var y = moment.duration(x, 'milliseconds').asHours; 

Czy ktoś może pomóc?

+0

Gdzie można sprawdzić w dokumentacji moment.js, że nie można go znaleźć? – djechlin

+0

Dodano kropkę, ale nadal nie działa – user3214545

+0

Teraz, gdy dodałeś brakującą kropkę, rozważ wywołanie 'asHours()' zamiast jej oceny. –

Odpowiedz

3

Wydaje się to nieobsługiwane per this SO. Po this github issue istnieje możliwość skorzystania z moment-to-countdown plugin.

Wygląda na to, że w tym przypadku warto najpierw uzyskać Countdown.js.

countdown(0, 433276000, countdown.HOURS | countdown.MINUTES).toString(); 

Uwaga ta nie uwzględnia sekundy przestępne, czy skoczyć wszystko dla tej sprawy, ponieważ rozwiązuje do epoki Uniksa (tak, to nie jest czysta przedział czasowy).

23

Spróbuj tego:

var x = 433276000 
var d = moment.duration(x, 'milliseconds'); 
var hours = Math.floor(d.asHours()); 
var mins = Math.floor(d.asMinutes()) - hours * 60; 
console.log("hours:" + hours + " mins:" + mins); 
+4

Dlaczego potrzebujesz 'var mins = Math.floor (d.asMinutes()) - godziny * 60;' czy mógłbyś po prostu użyć 'var mins = d.minutes()'? –

+0

@AlexG co do sekund – Kalashir

+0

@ Kalashir, o czym nie było mowy. – Bondt

44

skończyło się to zrobić ...

var x = 433276000 
var tempTime = moment.duration(x); 
var y = tempTime.hours() + tempTime.minutes(); 
+1

Jest to oczywiście poprawna odpowiedź, ponieważ 'tempTime.minutes()' podaje pozostałe minuty po obliczeniu godzin. – seebiscuit

+5

To nie działa przez okres 24 godzin lub dłuższy. –

+3

Działa, gdy zmienię ostatnią linię na 'var y = tempTime.hours() +": "+ tempTime.minutes();' – Esger

5

Jest łatwiejszy sposób, aby osiągnąć to, co chcesz .

Ten

moment('2000-01-01 00:00:00').add(moment.duration(1000)).format('HH:mm:ss'); 

wyjście będzie to

00:00:01 

Nie wyrafinowane, wiem, ale to jest w 100% czysty js chwili.

edit: Nie działa przez okres dłuższy niż 24 godziny

3

Można utworzyć datę Moment.js od milisekund używając moment.utc().

var milliseconds = 1000; 
moment.utc(milliseconds).format('HH:mm'); 
+1

To nie działa dla okresów powyżej 24 godzin. –

+0

To jest idealne. Jeśli chcesz> 24h, dodaj tylko dni lub godziny wyświetlania. https://codepen.io/h3ll/pen/VQdGMy –

3

Nie trzeba używać Momentu do tej operacji.

To może być napisany w jednym wierszu:

var hours = Math.round((450616708/1000/60/60) * 100)/100;

lub jako funkcję:

function millisecondsToHours(ms){ 
    return Math.round((ms/1000/60/60) * 100)/100; 
} 
0

W czasie trwania Moment.js można po prostu użyć Math.trunc godzinami, jeśli jesteś spodziewałem się, że będzie to ponad 24 godziny. gg: mm: ss format.

var seconds = moment.duration(value).seconds(); 
var minutes = moment.duration(value).minutes(); 
var hours = Math.trunc(moment.duration(value).asHours()); 

zobaczyć go tutaj: https://codepen.io/brickgale/pen/mWqKJv?editors=1011

-1

Non Kod Moment

var timeinmilli = 433276000; 
 
var milliseconds = timeinmilli%1000; 
 
var seconds  = parseInt(timeinmilli=timeinmilli/1000)%60; 
 
var minutes  = parseInt(timeinmilli=timeinmilli/60)%60; 
 
var hours  = parseInt(timeinmilli=timeinmilli/60)%24; 
 
var days  = parseInt(timeinmilli=timeinmilli/24); 
 

 
document.body.innerHTML = [days, hours, minutes, seconds, milliseconds].join(":");

Powiązane problemy