moment.js pobiera aktualny czas w milisekundach?


93
var timeArr = moment().format('HH:mm:ss').split(':');

var timeInMilliseconds = (timeArr[0] * 3600000) + (timeArr[1] * 60000);

To rozwiązanie działa, przetestuj je, ale wolałbym po prostu używać momentów API zamiast własnego kodu.

Ten kod zwraca DZISIAJ czas w milisekundach. Potrzebuję wywołania innej funkcji w milisekundach ... Nie można użyć epoki. Potrzebujesz dzisiejszego czasu wyrażonego w milisekundach. 9:00 = 3,24e + 7 milisekund 21:00 = 6,84e + 7 milisekund.


9
var timeInMilliseconds = moment().valueOf();Zobacz jsfiddle.net/rc1s2ek0
IronAces,

to jest od epoki .... Potrzebuję dzisiejszego czasu w milisekundach, a nie epoki.

Masz rację, ale twoje pytanie mówi, że chcesz
podać

2
Prawdopodobnie najłatwiej jest uzyskać różnicę między okresem obecnym a początkiem dnia dzisiejszego
Geert-Jan

Odpowiedzi:



38

Zobacz ten link http://momentjs.com/docs/#/displaying/unix-timestamp-milliseconds/

valueOf() to funkcja, której szukasz.

Edycja mojej odpowiedzi (OP chce milisekund dnia dzisiejszego, a nie od epoki)

Chcesz milliseconds()funkcji ALBO możesz iść na trasiemoment().valueOf()


1
Dzięki, ale nie o to pytam, to od roku epoki ... dzisiejszy czas w milisekundach.

@ code20 ahh, rozumiem. Wygląda na to, że Amy odpowiedziała na to powyżej. Szukasz funkcji milliseconds () lub możesz utworzyć pusty moment i użyć funkcji valueOf. Poprawiłem powyższą odpowiedź. momentjs ma naprawdę dobrą dokumentację na ten temat i jest całkiem uporządkowana. Możesz z nim zrobić całkiem fajne rzeczy. Powinieneś się temu przyjrzeć, jeśli masz szansę!
James,

Odpowiedź Amys jest nieprawidłowa. to jest czas 0-999 milisekund, przeczytałem dobrą ilość dokumentów i przeszukałem. Naprawdę nie mogę tego rozgryźć.

@ code20 Chcesz poznać milisekundy dzisiejszej daty? Jestem trochę zdezorientowany. Nie możesz użyć czasu epoki milisekund?
James,

1
@ code20 naprawdę musisz być bardziej szczegółowy w tym, czego chcesz. Do tej pory otrzymałeś odpowiedzi na ms od epoki lub „ms bieżącego czasu”, o co prosiłeś. Milisekundy od północy są zupełnie inne.
Amy,


10

Możesz odjąć bieżący znacznik czasu od godziny 12:00 tego samego dnia.

Używając aktualnego sygnatury czasowej:

moment().valueOf() - moment().startOf('day').valueOf()

Korzystanie z dowolnego dnia:

moment(someDate).valueOf() - moment(someDate).startOf('day').valueOf()

0

Możesz po prostu pobrać poszczególne składniki czasu i obliczyć sumę. Wydaje się, że spodziewasz się, że Moment ma już starannie zapakowaną tę funkcję, ale tak nie jest. Wątpię, żeby ludzie często tego potrzebowali.

Przykład:

var m = moment();

var ms = m.milliseconds() + 1000 * (m.seconds() + 60 * (m.minutes() + 60 * m.hours()));

console.log(ms);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>


0

Ponieważ ten wątek jest pierwszym z Google, który znalazłem, jeden dokładny i leniwy sposób, jaki znalazłem, to:

const momentObject = moment().toObject();
// date doesn't exist with duration, but day does so use it instead
//   -1 because moment start from date 1, but a duration start from 0
const durationCompatibleObject = { ... momentObject, day: momentObject.date - 1 };
delete durationCompatibleObject.date;

const yourDuration = moment.duration(durationCompatibleObject);
// yourDuration.asMilliseconds()

teraz po prostu dodaj kilka prototypów (takich jak toDuration ()) / .asMilliseconds () do chwili i możesz łatwo przełączyć się na milliseconds () lub cokolwiek!


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.