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/

Cmag
fonte
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
coma
fonte
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

Sabrina Luo
fonte
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()
catanfetamina
fonte
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
33

Tente usá-lo desta maneira:

let current_time = moment().format("HH:mm")
Craft4
fonte
2
O Craft4 está correto, consulte: momentjs.com/docs/#/displaying/format para saber como usar Format, mas não sei se a resposta está exatamente alinhada com a pergunta.
simey.me 16/11/2015
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();
hgoebl
fonte
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>

Durgpal Singh
fonte
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.

may mijangos
fonte
1

Obter por Localização:

moment.locale('pt-br')
return moment().format('DD/MM/YYYY HH:mm:ss')
Darlan Dieterich
fonte
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.

JC
fonte
0

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

const currentdate=moment().format("DD-MM-YYYY"); 
console.log(currentdate)
Jojo Joseph
fonte