Como retornar o carimbo de data / hora atual com Moment.js?


157

Pessoal,

Estou tentando entender a API do MomentJS. Qual é a maneira apropriada de obter a hora atual na máquina?

var CurrentDate = moment();

vs

var CurrentDate = moment().format();

Tentando analisar seus documentos, e não é aparente o que usar.

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


1
A hora atual como o quê? timestamp unix?
coma

Eu imagino o RFC3339 ou qualquer que seja a internet id padrão para retornar de volta para os clientes, etc
CMAG

2
Voltando ao cliente ... hummm ... acho que você está recebendo no nodejs e enviando para o navegador que deseja convertê-lo novamente em uma instância momentjs?
coma

1
Desculpe, você achou minha resposta útil?
coma

1
absolutamente, eu acho :) fez uma pergunta rápida sobrevar now = new Date().getTime(); userObject.registered = moment(now).toDate();
CMAG

Respostas:


239

Aqui você está atribuindo uma instância de momentjs ao CurrentDate:

var CurrentDate = moment();

Aqui apenas uma string, o resultado da formatação padrão de uma instância momentjs:

var CurrentDate = moment().format();

E aqui o número de segundos desde janeiro de ... bem, timestamp unix:

var CurrentDate = moment().unix();

E aqui outra string como ISO 8601 ( qual é a diferença entre os formatos de data ISO 8601 e RFC 3339? ):

var CurrentDate = moment().toISOString();

E isso também pode ser feito:

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

console.log(a.isSame(b)); // true

isso seria aceitável? var now = new Date().getTime(); userObject.registered = moment(now).toDate();
CMAG

1
@ Cmag, eu não entendo a pergunta, mas basta dar uma olhada no seguinte: jsfiddle.net/coma/bLe31qq0 , como você pode ver lá, mesmo depois de um segundo, a instância do momento mantém o mesmo tempo desde que está congelada, é o mesmo comportamento que a nova Date ().
coma

então é o mesmo comportamento?
CMAG

1
@Mag, sim, pense no momentjs como um objeto Date em esteróides e use o método toDate somente quando estiver trabalhando com bibliotecas de terceiros que precisam de um objeto Date bruto. Com o momentjs, cálculos complexos de tempo são mais do que fáceis e agradáveis. Eu criei
coma

Além disso, a .format('x')opção irá gerar uma string de carimbo de data / hora.
Jimmy Knoot

66

moment().unix() você receberá um timestamp unix

moment().valueOf() você receberá um carimbo de data / hora completo


1
Para formatar `var CurrentDateUnixTimestamp = moment (). Unix (); moment.unix (CurrentDateUnixTimestamp) .format ("AAAA-MM-DD HH: mm"); `
Glitch

Qual é a diferença entre unixtimestamp e fulltimestamp? Suponho que o fullregistro de data e hora seja o que indica o fluxo de tempo em milissegundos desde 1970 em 1º de janeiro, mas não consigo descobrir o outro.
DongBin Kim

3
.unix()fornece o carimbo de data e hora do Unix em segundos, .valueOf()o carimbo de data e hora do Unix em milissegundos (também conhecido como carimbo de data e hora do Unix).
Andrew Koster

33

Ainda sem resposta. Moment.js - Pode fazer qualquer coisa, menos uma tarefa tão simples.

Estou usando isso:

moment().toDate().getTime()

1
Eu gosto disso melhor do que +moment(). Mais personagens, mas mais fáceis de ler e entender.
22416

Eu concordo com isso @joemaller, idiossincrasias de JavaScript pode pegá-lo para fora se não pegou cedo lol
Ian Brindley


11

Se você quer apenas os milissegundos desde 01 de janeiro de 1970, pode usar

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();

4

Tente isto

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>


2

Tente desta maneira:

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

Datas do formato:

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

Visite: https://momentjs.com/ para mais informações.


1

Obter por Localização:

moment.locale('pt-br')
return moment().format('DD/MM/YYYY HH:mm:ss')

1
O que faz .locale ()?
Charith_32

Oi @ Charith_32, basicamente isso traduz o formato definido. EX; .format ('LLL')
Darlan Dieterich

1

Gostaria de acrescentar que você pode ter todas as informações de dados em um objeto com:

const today = moment().toObject();

Você deve obter um objeto com estas propriedades:

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

É muito útil quando você precisa calcular datas.


0

Data atual usando momment.js no formato DD-MM-AAAA

const currentdate=moment().format("DD-MM-YYYY"); 
console.log(currentdate)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.