9

Moment.js: Преобразование в объект даты

7

Описание проблемы:

Используя Moment.js, я не могу преобразовать корректный объект moment в объект Date с учётом часовых поясов. В итоге, я не получаю правильную дату.

Пример:

var oldDate = new Date(),
    momentObj = moment(oldDate).tz("MST7MDT"),
    newDate = momentObj.toDate();

console.log("исходная дата " + oldDate);
console.log("Формат из moment с учетом смещения " + momentObj.format());
console.log("Формат из moment без учета смещения " + momentObj.utc().format());
console.log("(Объект Date) Время с учетом смещения " + newDate);
console.log("(Объект Date) Время без учета смещения " + moment.utc(newDate).toDate());

Причина, по которой не получается корректно отобразить дату с учётом часового пояса, остаётся неясной. Почему newDate не отображает правильное время?

5 ответ(ов)

16

Чтобы преобразовать объект moment в объект даты, используйте следующий код:

Согласно документации Moment.js (http://momentjs.com/docs/#/displaying/as-javascript-date/):

moment().toDate();

Это вернёт результат в формате объекта даты:

Tue Nov 04 2014 14:04:01 GMT-0600 (CST)

Таким образом, вы можете легко конвертировать момент в стандартный объект Date в JavaScript.

0

.toDate действительно не сработал для меня, поэтому вот что я сделал:

futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:mm"))

Надеюсь, это поможет!

0

С учетом того, что momentjs не управляет объектом даты в JavaScript, я нашел обходное решение для этой задачи.

const currentTime = new Date();    
const convertTime = moment(currentTime).tz(timezone).format("YYYY-MM-DD HH:mm:ss");
const convertTimeObject = new Date(convertTime);

Этот код создаст объект даты JavaScript с преобразованным временем.

0

Для того чтобы преобразовать любую дату в формат UTC, вы можете использовать библиотеку Moment.js. Например, вот как это можно сделать:

const dateInUTC = moment(moment().utc().format("YYYY-MM-DD HH:mm:ss")).toDate();

В этом коде мы сначала получаем текущее время в формате UTC с помощью moment().utc().format("YYYY-MM-DD HH:mm:ss"), затем создаем объект даты с помощью moment(...). Наконец, метод toDate() преобразует его в стандартный объект Date JavaScript.

Убедитесь, что библиотека Moment.js подключена к вашему проекту, чтобы этот код работал корректно.

0

Вы можете использовать библиотеку moment.js для работы с датами. Если у вас есть переменная даты, вы можете привести её к формату UTC следующим образом:

let dateVar = moment('ваше значение даты');
let newDateVar = dateVar.utc().format();

Этот код создаёт новую переменную даты newDateVar, которая будет содержать ту же дату, но в формате UTC. Это простой и элегантный способ преобразования даты, используя moment.js.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь