Странное поведение new Date(Date.UTC(...))
при преобразовании даты из utc в местное время пользователя
У меня есть метка времени, полученная с сервера, которая похожа на 2019-02-01 14:28:16
, и яя пытаюсь преобразовать эту временную метку в локальное время пользователей безопасным способом, чтобы избежать недопустимая дата ошибка.
Но на удивление она конвертирует 1-е февраля в 5-е февраля .Вот сценарий:
const myDate = new Date('2019-02-01 14:28:16');
console.log('Step 1: MyDate: ' + myDate.toString());
const utcFormateOfMyDate = Date.UTC(
myDate.getFullYear(),
myDate.getMonth(),
myDate.getDay(),
myDate.getHours(),
myDate.getMinutes(),
myDate.getSeconds(),
myDate.getMilliseconds()
);
console.log('Step 2: utcFormateOfMyDate: ' + utcFormateOfMyDate.toString()); // 1549376896000
console.log('Step 3.1 => ' + new Date(utcFormateOfMyDate)); // Tue Feb 05 2019 19:28:16 GMT+0500 (Pakistan Standard Time
console.log('Step 3.2 => ' + Date(utcFormateOfMyDate)); // Fri Feb 01 2019 19:43:36 GMT+0500 (Pakistan Standard Time)
Единственное изменение, которое я только что добавил, добавило новое ключевое слово и преобразованную метку времени, прыгнул с 1 февраля на 5 февраля (в будущем);см. скриншот
Хотя удаление нового ключевого слова решило проблему, но я не смог найти объяснение этого магического эффекта.Может ли кто-нибудь помочь мне понять это поведение?