В БД заношу время в формате time(), т.е. в секундах. Когда клиенту возвращается время операции, то он видит серверное время, а не свое. Как правильно конвертировать серверное время?
Как идея - это узнать время в секундах на устройстве, с запросом отправить это время на сервер. Там вычислить разницу.
Подскажите, если у кого есть готовый алгоритм и код.
Функция 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(':'));
Сборка персонального компьютера от Artline: умный выбор для современных пользователей