Как вернуть текущую метку времени с Moment.js?

158

Folks,

Я пытаюсь понять API MomentJS. Как правильно получить текущее время на машине?

var CurrentDate = moment();

против

var CurrentDate = moment().format();

Попытка разобрать их документы, и не очевидно, что использовать.

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

Cmag
источник
1
Текущее время как что? метка времени Unix?
кома
Я мог бы представить RFC3339 или любой другой стандартный интернет-идентификатор для возврата клиентам и т. Д.
Cmag
2
Возвращаясь к клиенту ... хммм ... Я думаю, что вы получаете его в nodejs и отправляете его в браузер, желая преобразовать его снова в экземпляр моментального времени?
кома
1
Извините, вы нашли мой ответ полезным?
Кома
1
абсолютно, я думаю :) задал быстрый вопрос относительноvar now = new Date().getTime(); userObject.registered = moment(now).toDate();
Cmag

Ответы:

241

Здесь вы назначаете экземпляр currentjs для CurrentDate:

var CurrentDate = moment();

Вот только строка, результат форматирования по умолчанию для экземпляра momentjs:

var CurrentDate = moment().format();

А вот количество секунд с января ... ну, отметка времени unix:

var CurrentDate = moment().unix();

А вот еще одна строка , такая как ISO 8601 (В чем разница между форматами даты ISO 8601 и RFC 3339? ):

var CurrentDate = moment().toISOString();

И это тоже можно сделать:

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

console.log(a.isSame(b)); // true
кома
источник
это будет приемлемо? var now = new Date().getTime(); userObject.registered = moment(now).toDate();
Cmag
1
@Cmag, я не понимаю вопроса, но просто взгляните на это: jsfiddle.net/coma/bLe31qq0 , как вы можете видеть там, даже через секунду моментный экземпляр сохраняет то же время, так как он заморожен, это такое же поведение, как у новой даты ().
Кома
так это же поведение?
Cmag
1
@Cmag, да, это так, думайте о моментах как об объекте Date на стероидах и используйте метод toDate только тогда, когда вы работаете с сторонними библиотеками, нуждающимися в необработанном объекте Date. С моментами сложные вычисления времени более чем просты, приятны. Я создал для него средство выбора даты: github.com/coma/MomentPicker/blob/master/src/MomentPicker.js
кома
Также .format('x')опция генерирует строку метки времени.
Джимми Ноот
66

moment().unix() вы получите метку времени Unix

moment().valueOf() вы получите полную метку времени

Сабрина Ло
источник
1
Чтобы отформатировать `var CurrentDateUnixTimestamp = moment (). Unix (); moment.unix (CurrentDateUnixTimestamp) .format ( "ГГГГ-ММ-ДД ЧЧ: мм"); `
Глитч
В чем разница между unixотметкой времени и fullотметкой времени? Я полагаю, что fullвременная метка - это то, что показывает ~ временной поток в миллисекундах с 1 января 1970 года, но я не могу понять другую.
Донгбин Ким
3
.unix()дает метку времени Unix в секундах, .valueOf()метку времени Unix в миллисекундах (AKA, что я всегда считал меткой времени Unix).
Эндрю Костер
33

Тем не менее, нет ответа. Moment.js - может сделать что-нибудь, кроме такой простой задачи.

Я использую это:

moment().toDate().getTime()
catamphetamine
источник
1
Мне нравится это лучше, чем +moment(). Больше символов, но легче читать и понимать.
Joemaller
Я бы согласился с этим @joemaller, идиосинкразии Javascript могут вас поймать, если не подхватить рано, лол
Ян Бриндли,
33

Попробуйте использовать это так:

let current_time = moment().format("HH:mm")
Craft4
источник
2
Craft4 верен, пожалуйста, обратитесь к: momentjs.com/docs/#/displaying/format, чтобы узнать, как его использовать Format, но не уверен, что ответ точно совпадает с вопросом.
simey.me
11

Если вы просто хотите миллисекунды с 01 января 1970 года, вы можете использовать

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
источник
4

Попробуй это

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

Попробуйте так:

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

Формат даты:

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

Посетите: https://momentjs.com/ для получения дополнительной информации.

май миджангос
источник
1

Получить по местоположению:

moment.locale('pt-br')
return moment().format('DD/MM/YYYY HH:mm:ss')
Дарлан Дитрих
источник
1
Что делает .locale ()?
Charith_32
Привет @ Charith_32, в основном это переводит ваш определенный формат. EX; .format ('LLL')
Дарлан Дитерих
1

Я хотел бы добавить, что вы можете иметь всю информацию о данных в объекте с:

const today = moment().toObject();

Вы должны получить объект со следующими свойствами:

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

Это очень полезно, когда вам нужно рассчитать даты.

JC
источник
0

Текущая дата с использованием momment.js в формате DD-MM-YYYY

const currentdate=moment().format("DD-MM-YYYY"); 
console.log(currentdate)
Джохо Джозеф
источник