Як повернути поточну мітку часу за допомогою Moment.js?


157

Люди,

Я намагаюся зрозуміти API MomentJS. Який підходящий спосіб отримати поточний час на машині?

var CurrentDate = moment();

проти

var CurrentDate = moment().format();

Намагаються розібрати свої документи, і не видно, що використовувати.

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


1
Поточний час як що? UNIX часова мітка?
кома

Я б уявив RFC3339 або будь-який Інтернет-стандартний ідентифікатор для повернення клієнтів тощо
Cmag

2
Повертаючись назад до клієнта ... hummm ... я здогадуюсь, що ви отримуєте його в nodejs і відправляєте його в браузер, бажаючи знову перетворити його на екземпляр momentjs?
кома

1
Вибачте, чи вважаєте ви мою відповідь корисною?
кома

1
абсолютно, я думаю :) задали швидке запитання щодоvar now = new Date().getTime(); userObject.registered = moment(now).toDate();
Cmag

Відповіді:


239

Тут ви призначаєте екземпляр momentjs для 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, Так, так, подумайте про momentjs як об'єкт Date на стероїдах і використовуйте метод toDate лише тоді, коли ви працюєте з сторонніми власниками, які потребують необмеженого об'єкта Date. З моментами складні обчислення часу більш ніж легкі, приємні. Я створив датчик для
кома

Також .format('x')параметр генерує рядок часової позначки.
Джиммі Кнут

66

moment().unix() Ви отримаєте часову позначку Unix

moment().valueOf() ви отримаєте повну мітку часу


1
Для форматування `var CurrentDateUnixTimestamp = moment (). Unix (); moment.unix (CurrentDateUnixTimestamp) .формат ("YYYY-MM-DD HH: mm"); `
Glitch

Яка різниця між unixпозначкою часу і fullпозначкою часу? Я припускаю, що fullчасова мітка - це те, що вказує на ~ час руху ~ в мілісекундах з 1970 року 1 січня, але я не можу з’ясувати іншу.
DongBin Kim

3
.unix()дає вам часову позначку Unix в секундах, .valueOf()дає вам часову позначку Unix в мілісекундах (AKA, що я завжди вважав часовою міткою Unix).
Андрій Костер

33

Все-таки відповіді немає. Moment.js - Можна зробити що завгодно, крім такого простого завдання.

Я використовую це:

moment().toDate().getTime()

1
Мені це подобається краще +moment(). Більше символів, але простіше читати та розуміти.
joemaller

Я погоджуюся з цим @joemaller, ідіосинкразії Javascript можуть застати вас, якщо не підхопили рано lol
Ian Brindley

33

Спробуйте використовувати його так:

let current_time = moment().format("HH:mm")

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

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
    }

Це дуже корисно, коли вам доведеться підрахувати дати.


0

Поточна дата, використовуючи momment.js у форматі DD-MM-YYYY

const currentdate=moment().format("DD-MM-YYYY"); 
console.log(currentdate)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.