Moment.js: Преобразование в объект даты
Описание проблемы:
Используя 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 ответ(ов)
Чтобы преобразовать объект 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.
.toDate
действительно не сработал для меня, поэтому вот что я сделал:
futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:mm"))
Надеюсь, это поможет!
С учетом того, что 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 с преобразованным временем.
Для того чтобы преобразовать любую дату в формат 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 подключена к вашему проекту, чтобы этот код работал корректно.
Вы можете использовать библиотеку moment.js
для работы с датами. Если у вас есть переменная даты, вы можете привести её к формату UTC следующим образом:
let dateVar = moment('ваше значение даты');
let newDateVar = dateVar.utc().format();
Этот код создаёт новую переменную даты newDateVar
, которая будет содержать ту же дату, но в формате UTC. Это простой и элегантный способ преобразования даты, используя moment.js
.
Получение часового пояса (и смещения) клиента в JavaScript
В чем разница между String.slice и String.substring?
Проверка соответствия строки регулярному выражению в JS
Существует ли ссылка на "последнюю" библиотеку jQuery в Google APIs?
Как создать диалог с кнопками "Ок" и "Отмена"