Вывести клиенту правильное время

244
05 марта 2017, 08:04

В БД заношу время в формате time(), т.е. в секундах. Когда клиенту возвращается время операции, то он видит серверное время, а не свое. Как правильно конвертировать серверное время?

Как идея - это узнать время в секундах на устройстве, с запросом отправить это время на сервер. Там вычислить разницу.

Подскажите, если у кого есть готовый алгоритм и код.

Answer 1

Функция time(), которую вы используете, возвращает UNIX-timestamp, который в свою очередь примечателен тем, что не зависит от часового пояса(секунды отсчитываются по Гринвичу).

Передав его на клиент, вы можете инстанциировать объект даты с его помощью, причём дата будет интерпретировать UNIX-timestamp корректно, с учётом текущего часового пояса клиента.

Единственный момент, который нужно учесть - в js timestamp задаётся в миллисекундах:

//let ts = <?=time()?>; 
let ts = 1488575448; 
let now = new Date(ts * 1000); 
 
console.log(now.toTimeString()); 
 
// Разумеется, время можно форматировать самостоятельно 
console.log( 
[ 
  now.getHours(), 
  now.getMinutes(),  
  now.getSeconds()] 
  .map(d => d < 10 ? '0'+d : d) 
  .join(':'));

READ ALSO
Ошибка при выводе значения из MySQL

Ошибка при выводе значения из MySQL

alert выводит только значения, состоящие из цифрЕсли "подмешиваю" буквы - появляется ошибка Uncaught ReferenceError: yyyyyyyy is not defined

253
Не запоминает состояние radio

Не запоминает состояние radio

Здравствуйте! Есть тестирование из 5 вопросов - 5 "вкладок" с вопросами и кнопка "Завершить тест"В конце выдает результат сколько правильных...

226
Slick-слайдер: как отцентровать один слайд?

Slick-слайдер: как отцентровать один слайд?

Установил на сайте slick-слайдер и адаптировал его через responsive под разные размеры экранаТак получается, что для экранов менее 460px показывать...

628