Браузер жестко задает часовой пояс обьектам даты исходя из настроек часового пояса операционной системы. Но в некоторых приложениях необходимо чтобы все пользователи сайта видели буквально одно и то же время, с какого бы места на земном шаре они бы не зашли. Как можно в ручную задать смещение часового пояса в javascript? Чтобы оно автоматически применилось ко всем обьектам Date?
Воспользуйтесь библиотекой moment.js.
В ней это делается легко и просто:
var message = "Московское время: " + moment().utcOffset(3).format("HH:mm")
Я написал крутой полифилл специально для себя и вас! Добавляет столь желанную функцию Date.setTimezoneOffset() Удивительно что подобное изначально не встроенно в браузер и яваскрипт. Вот он, можете лайкнуть :3 https://github.com/uMaxmaxmaximus/date-timezone
Пример использования:
// Установить смещение таймзоны для всех дат
Date.timezoneOffset(-240) // +4 UTC
// Установить смещение таймзоны только для данной даты
(new Date).timezoneOffset(-180) // +3 UTC
Coffeescript версия:
do ->
# tmp date
offsetDate = new Date()
# default timezone
Date.prototype.timezoneOffset = offsetDate.getTimezoneOffset()
Date.setTimezoneOffset = (timezoneOffset)->
return @prototype.timezoneOffset = timezoneOffset
Date.getTimezoneOffset = (timezoneOffset)->
return @prototype.timezoneOffset
Date.prototype.getTimezoneOffset = ->
return @timezoneOffset
Date.prototype.setTimezoneOffset = (timezoneOffset)->
return @timezoneOffset = timezoneOffset
Date.prototype.toString = ->
offsetTime = @timezoneOffset * 60 * 1000
offsetDate.setTime(@getTime() - offsetTime)
return offsetDate.toUTCString()
[
'Milliseconds', 'Seconds', 'Minutes', 'Hours',
'Date', 'Month', 'FullYear', 'Year', 'Day'
]
.forEach (key)=>
Date.prototype["get#{key}"] = ->
offsetTime = @timezoneOffset * 60 * 1000
offsetDate.setTime(@getTime() - offsetTime)
return offsetDate["getUTC#{key}"]()
Date.prototype["set#{key}"] = (value)->
offsetTime = @timezoneOffset * 60 * 1000
offsetDate.setTime(@getTime() - offsetTime)
offsetDate["setUTC#{key}"](value)
time = offsetDate.getTime() + offsetTime
@setTime(time)
return time
Скомпилированная версия:
(function() {
var offsetDate;
offsetDate = new Date();
Date.prototype.timezoneOffset = offsetDate.getTimezoneOffset();
Date.setTimezoneOffset = function(timezoneOffset) {
return this.prototype.timezoneOffset = timezoneOffset;
};
Date.getTimezoneOffset = function(timezoneOffset) {
return this.prototype.timezoneOffset;
};
Date.prototype.getTimezoneOffset = function() {
return this.timezoneOffset;
};
Date.prototype.setTimezoneOffset = function(timezoneOffset) {
return this.timezoneOffset = timezoneOffset;
};
Date.prototype.toString = function() {
var offsetTime;
offsetTime = this.timezoneOffset * 60 * 1000;
offsetDate.setTime(this.getTime() - offsetTime);
return offsetDate.toUTCString();
};
return ['Milliseconds', 'Seconds', 'Minutes', 'Hours', 'Date', 'Month', 'FullYear', 'Year', 'Day'].forEach((function(_this) {
return function(key) {
Date.prototype["get" + key] = function() {
var offsetTime;
offsetTime = this.timezoneOffset * 60 * 1000;
offsetDate.setTime(this.getTime() - offsetTime);
return offsetDate["getUTC" + key]();
};
return Date.prototype["set" + key] = function(value) {
var offsetTime, time;
offsetTime = this.timezoneOffset * 60 * 1000;
offsetDate.setTime(this.getTime() - offsetTime);
offsetDate["setUTC" + key](value);
time = offsetDate.getTime() + offsetTime;
this.setTime(time);
return time;
};
};
})(this));
})();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Реализую функцию, которая принимает строку и возвращает позицию каждого символа в этой строке
Делал урок по Ajax поиску, когда вбиваю слово,оно должно проверяться через array в php файле и показывать есть ли оно или нет в array, но в результате...
Есть запрос погоды на сайт openweathermapВ JSON ответе есть в поле weather