@Artem0071
Безработный mr. Junior

Как убрать влияние часового пояса?

Есть функция:
toDate(date, time){
    let d = new Date(date + ' ' + time);
    return d;
}

в date передаю 2017-03-09
в time передаю 03:30:00

На выходе получается 2017-03-09T00:30:00.000Z, т.е -3UTC
Как убрать это смещение?
И заодно как получить такой формат: dd/mm/YYYY HH:mm ?
  • Вопрос задан
  • 912 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Внутри, объект Date не хранит указание на временную зону, он считает время всегда в UTC и значением хранит только число миллисекунд с 1970-01-01 00:00:00 UTC. Он также в курсе временной зоны устройства, и может учитывать её при формировании вывода.

Когда в конструктор Date передаётся только 1 аргумент (ваш случай), этот аргумент интерпретируется как время в зоне UTC; когда больше одного – в местной временной зоне.

Как я понял, вы хотите создать объект Date, передав дату-время в UTC?

Попробуйте так:
function toDate(date, time) {
    return new Date( Date.UTC( date + ' ' + time));
}


Формат dd/mm/YYYY HH:mm можно получить, составляя из компонент. Опять же, по UTC получить, или в локальной временной зоне? Для UTC будет выглядеть так:
function pad(n){ return ('0' + n).substr(-2) }
function toUTCString(d) {
  return '' + pad( d.getUTCDate()) + '/' + pad(d.getUTCMonth()+1) + '/' + d.getUTCFullYear()
    +' ' + pad( d.getUTCHours()) + ':" + pad( d.getUTCMinutes());
}


В локальной временной зоне устройства – уберите 'UTC' из всех методов )
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы