добавить или вычесть разницу часовых поясов в JavaScript Дата - PullRequest
27 голосов
/ 13 сентября 2011

Как лучше всего прибавлять или вычитать разницу часовых поясов к переменной targetTime ниже Значения часового пояса GMT поступают из БД в следующем формате: 1.00 по лондонскому времени, -8.00 по тихоокеанскому времени и т. Д.

Код выглядит так:

date = "September 21, 2011 00:00:00";
targetTime = new Date(date);

Ответы [ 3 ]

53 голосов
/ 15 сентября 2011

Вы можете использовать Date.getTimezoneOffset, который возвращает локальное смещение от GMT в минутах.Обратите внимание, что он возвращает значение с противоположным знаком, который вы можете ожидать.Таким образом, GMT-5 - это 300, а GMT + 1 - -60.

var date = "September 21, 2011 00:00:00";
var targetTime = new Date(date);
var timeZoneFromDB = -7.00; //time zone value from database
//get the timezone offset from local time in minutes
var tzDifference = timeZoneFromDB * 60 + targetTime.getTimezoneOffset();
//convert the offset to milliseconds, add to targetTime, and make a new Date
var offsetTime = new Date(targetTime.getTime() + tzDifference * 60 * 1000);
13 голосов
/ 07 сентября 2017

Простая функция, которая работает для меня:

adjustForTimezone(date:Date):Date{
    var timeOffsetInMS:number = date.getTimezoneOffset() * 60000;
    date.setTime(date.getTime() - timeOffsetInMS);
    return date
}
2 голосов
/ 29 ноября 2018

Если вам нужно компенсировать часовой пояс, я бы порекомендовал следующий фрагмент:

var dt = new Date('2018-07-05')
dt.setMinutes(dt.getMinutes() + dt.getTimezoneOffset())
console.log(dt)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...