Jak zwrócić aktualny znacznik czasu za pomocą Moment.js?

157

Ludzie,

Próbuję zrozumieć API MomentJS. Jaki jest właściwy sposób uzyskania aktualnego czasu na komputerze?

var CurrentDate = moment();

vs

var CurrentDate = moment().format();

Próbuję przeanalizować ich dokumenty, ale nie jest jasne, czego użyć.

http://momentjs.com/docs/#/query/is-a-moment/

Cmag
źródło
1
Obecny czas jak co? unix timestamp?
śpiączka
Wyobrażałbym sobie RFC3339 lub jakikolwiek inny standardowy identyfikator internetowy do powrotu do klientów itp.
Cmag
2
Wracając do klienta ... hummm ... Domyślam się, że pobierasz to w nodejs i wysyłasz do przeglądarki, chcąc ponownie przekonwertować na instancję momentjs?
śpiączka
1
Przepraszam, czy moja odpowiedź była pomocna?
śpiączka
1
absolutnie tak myślę :) zadałem szybkie pytanie dotyczącevar now = new Date().getTime(); userObject.registered = moment(now).toDate();
Cmag

Odpowiedzi:

239

Tutaj przypisujesz instancję momentjs do CurrentDate:

var CurrentDate = moment();

Tutaj tylko ciąg, wynik z domyślnego formatowania instancji momentjs:

var CurrentDate = moment().format();

A tutaj liczba sekund, które upłynęły od stycznia ... cóż, uniksowy znacznik czasu:

var CurrentDate = moment().unix();

A tutaj kolejny ciąg znaków jako ISO 8601 ( Jaka jest różnica między formatami daty ISO 8601 i RFC 3339? ):

var CurrentDate = moment().toISOString();

I to też można zrobić:

var a = moment();
var b = moment(a.toISOString());

console.log(a.isSame(b)); // true
śpiączka
źródło
czy to byłoby do przyjęcia? var now = new Date().getTime(); userObject.registered = moment(now).toDate();
Cmag
1
@Cmag, nie rozumiem pytania, ale spójrz tylko na to: jsfiddle.net/coma/bLe31qq0 , jak widać, nawet po sekundzie instancja zachowuje ten sam czas, ponieważ jest zamrożona, to takie samo zachowanie jak new Date ().
śpiączka
więc to to samo zachowanie?
Cmag
1
@Cmag, tak, to jest, pomyśl o momentjs jako obiekcie Date na sterydach i używaj metody toDate tylko wtedy, gdy pracujesz z bibliotekami innych firm, które wymagają surowego obiektu Date. Z momentjs złożone obliczenia czasu są więcej niż łatwe, są przyjemne. Stworzyłem
śpiączka
Również .format('x')opcja generuje ciąg datownika.
Jimmy Knoot
66

moment().unix() otrzymasz uniksowy znacznik czasu

moment().valueOf() otrzymasz pełny znacznik czasu

Sabrina Luo
źródło
1
Aby sformatować `var CurrentDateUnixTimestamp = moment (). Unix (); moment.unix (CurrentDateUnixTimestamp) .format ("RRRR-MM-DD HH: mm"); `
Glitch
Jaka jest różnica między unixdatownikiem a fulldatownikiem? Przypuszczam, że fullznacznik czasu wskazuje ~ upływ czasu ~ w milisekundach od 1 stycznia 1970 r., Ale nie mogę określić drugiego.
DongBin Kim
3
.unix()daje uniksowy znacznik czasu w sekundach, .valueOf()daje uniksowy znacznik czasu w milisekundach (AKA, o czym zawsze myślałem jako o uniksowym znaczniku czasu).
Andrew Koster,
33

Nadal nie ma odpowiedzi. Moment.js - może zrobić wszystko, ale takie proste zadanie.

Używam tego:

moment().toDate().getTime()
katamfetamina
źródło
1
Podoba mi się to bardziej niż +moment(). Więcej znaków, ale łatwiejsze do odczytania i zrozumienia.
joemaller
Zgadzam się z tym @joemaller, idiosynkrazje Javascript mogą cię złapać, jeśli nie zostaną odebrane wcześnie lol
Ian Brindley
33

Spróbuj użyć tego w ten sposób:

let current_time = moment().format("HH:mm")
Craft4
źródło
2
Craft4 jest poprawny, zapoznaj się z: momentjs.com/docs/#/displaying/format, aby dowiedzieć się, jak go używać Format, ale nie jesteś pewien, czy odpowiedź jest dokładnie zgodna z pytaniem.
simey.me
11

Jeśli chcesz tylko milisekund od 1 stycznia 1970 r., Możesz użyć

var theMoment = moment(); // or whatever your moment instance is
var millis;

millis = +theMoment; // a short but not very readable form
// or
millis = theMoment.valueOf();
// or (almost sure not as efficient as above)
millis = theMoment.toDate().getTime();
hgoebl
źródło
4

Spróbuj tego

console.log(moment().format("MM ddd, YYYY hh:mm:ss a"));

console.log(moment().format("MM ddd, YYYY hh:mm:ss a"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

Durgpal Singh
źródło
2

Spróbuj w ten sposób:

console.log(moment().format('L'));
moment().format('L');    // 05/25/2018
moment().format('l');    // 5/25/2018

Formatuj daty:

moment().format('MMMM Do YYYY, h:mm:ss a'); // May 25th 2018, 2:02:13 pm
moment().format('dddd');                    // Friday
moment().format("MMM Do YY");               // May 25th 18
moment().format('YYYY [escaped] YYYY');     // 2018 escaped 2018
moment().format();                          // 2018-05-25T14:02:13-05:00

Odwiedź: https://momentjs.com/, aby uzyskać więcej informacji.

może mijangos
źródło
1

Pobierz według lokalizacji:

moment.locale('pt-br')
return moment().format('DD/MM/YYYY HH:mm:ss')
Darlan Dieterich
źródło
1
Co robi .locale ()?
Charith_32
Cześć @ Charith_32, w zasadzie to tłumaczy zdefiniowany format. DAWNY; .format ('LLL')
Darlan Dieterich
1

Dodam, że w obiekcie można mieć pełne informacje o danych z:

const today = moment().toObject();

Powinieneś otrzymać obiekt o tych właściwościach:

today: {
    date: 15,
    hours: 1,
    milliseconds: 927,
    minutes: 59,
    months: 4,
    seconds: 43,
    years: 2019
    }

Jest to bardzo przydatne, gdy musisz obliczyć daty.

JC
źródło
0

Bieżąca data w formacie momment.js w formacie DD-MM-RRRR

const currentdate=moment().format("DD-MM-YYYY"); 
console.log(currentdate)
Jojo Joseph
źródło