Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.09.2017, 21:35
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Изменяем GTM зону
Есть переменные $userTime = "03.09.2017 11:11:27" здесь я храню время в GMT 0 зоне.
Есть какое-то простой способ переконструировать его допустим в GTM +2 зону?
Или сразу в зону клиента.
Нашел примеры как это можно сделать с moment.js, но может есть какой-то другой постой вариант, без сторонних библиотек.

Последний раз редактировалось dima85, 03.09.2017 в 21:38.
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2017, 21:57
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

у клиента вашего находящегося в другой таймзоне автоматом добавятся эти два часа если указано в GMT. В объекте date насколько я знаю нельзя в дальнейшем менять, если вы столько сразу не создали объект с нужной таймзоной.

Последний раз редактировалось j0hnik, 03.09.2017 в 23:16.
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2017, 09:10
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

dima85,
function utcToLocal(date) {
	var match = date.match(/\d+|\D+/g);
	date = Date.UTC(+match[4], match[2]-1, +match[0], +match[6], +match[8], +match[10]);
	date = new Date(date);
	match[0] = pad(date.getDate());
	match[2] = pad(date.getMonth() + 1);
	match[4] = date.getFullYear();
	match[6] = pad(date.getHours());
	match[8] = pad(date.getMinutes());
	match[10] = pad(date.getSeconds());
	return match.join('');
	function pad(number) {
		return number < 10 ? '0' + number : number;
	}
}
var $userTime = "03.09.2017 11:11:27";
alert($userTime + '\n' + utcToLocal($userTime));
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2017, 12:04
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

Спасибо за пример Rise с разбором.
Но я думал это можно сделать как-то проще. Очень жаль.
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2017, 02:55
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

dima85,
Смысла нет хранить время в форматированном виде, чтобы затем переформатировать форматированное. В мире программирования в царстве дат и времен существует специальная зоно-формато-независимая величина - Unix timestamp, а точнее она всегда в зоне 0 или просто - UTC (также известное как GMT). В php она обычно в секундах, например вызов time() вернет ее, в js в миллисекундах, например date.getTime(). От отсутствия переформатирования станет проще, как на сервере, так и на клиенте, а при не строгом формате можно использовать метод toLocaleString:
var $userTime = 1504437087000;
alert(new Date(1504437087000).toLocaleString());

В старых браузерах формат вывода может отличаться, но с появлением стандарта интернационализации, все современные браузеры реализуют формат в более менее едином виде, который зависит от настроек локали клиента если не определены специальные параметры метода. Возможно этого вам будет достаточно.

Последний раз редактировалось Rise, 05.09.2017 в 03:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменяем ссылку dima85 Общие вопросы Javascript 2 31.07.2015 13:34
Дата по GTM +3 AlexDIXI Общие вопросы Javascript 2 10.06.2014 12:48
Как реализовать карту "При наведении мышки на зону подсвечивать соответствующий линк" Моряк Папай Элементы интерфейса 0 10.08.2011 22:42