Вы должны использовать moment.utc(String, String)
для разбора вашей строки в режиме UTC
По умолчанию момент анализируется и отображается по местному времени.
ЕслиВы хотите проанализировать или отобразить момент в UTC, вы можете использовать moment.utc()
вместо moment()
Затем вы можете использовать local()
, чтобы преобразовать его в местное время:
Устанавливает флаг для исходного момента, чтобы использовать местное время для отображения момента вместо времени исходного момента.
Обратите внимание, что, поскольку вы вводите dateStr
не в признанном формате ISO 8601 / RCF 2822, вы должны указать формат при его анализе.Токены момента Morover чувствительны к регистру, поэтому вы должны использовать прописные буквы YYYY
вместо yyyy
для разбора лет и прописные буквы DD
для разбора дня месяца, поскольку строчные буквы dd
обозначают день недели (понедельник, вторник,и т. д.)
Вот живой пример:
const dateStr = '20.09.2018 16:12:37';
const format = 'DD.MM.YYYY HH:mm:ss';
console.log(moment.utc(dateStr, format).local().format(format));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
Изучите руководство Местный против UTC против смещения , чтобы лучше понять, как работают UTC и режим локали в моменты времени.