Каждая ОС имеет
механизм, который синхронизирует локальные часы с более надежным источником хронометража (таким как атомные часы NIST). Если это еще не сделано, настройте сервер для синхронизации его часов с одним из этих источников. В 99% у клиентов будет правильное время. Если вам нужна 100% точность, то продолжайте читать!
Сообщение от ddro3doff
|
В принципе все скрипты работают как нужно, токо по времени юзера, а мне нужно что бы таймер отсчитывал от серверного времени или от какого нибудь стороннего сервера.И вызывал всплывающие она тоже от серверного времени
|
Т. е. вам нужно, чтобы время клиента было точным!
Вы можете получить с сервера времени(или со своего сервера) метку времени (UTC timestamp) и её передать в конструктор Date. Так вы получите точное время на тот момент. Пусть оно хранится в константе serverTime. Вам сразу же надо создать константу со временем на устройстве пользователя, например, пусть это будет clientTime.
Вычислив разницу между двумя этими временами, вы узнаете на сколько отличается время клиента от точного!
const now = serverDate.getTime() - clientDate.getTime();
Для того, чтобы получать впоследствии точное время, вам нужно прибавлять эту разницу ко времени клиента
const date = new Date(Date.now() + now);
Сообщение от laimas
|
Сервер и клиент возвращают смещение с противоположными знаками
|
Какой ужас! Я всё ни как не пойму, зачем вам вообще Лондон сдвигать в Москву...
Зачем вы меняете timestamp? У вас получилось по пятницам в 16 в Москве (GMT+3), или в 19, но в Бангладеше (GMT+6), (это одно и тоже время!)
UPD[И от того, с какого часового пояса смотреть тоже отличается!
]
И зачем вы пишете так, как будто у каждой временной зоны существует свой собственный timestamp?
ddro3doff, нужно получить timestamp, когда начинается мероприятие(назовём его eventDate), вычислив eventDate - date вы получите, сколько времени осталось до события. Вот
график, а вот решение
https://jsfiddle.net/5ts70kr2/ (Там время берётся со стороннего сервера, но вы можете брать со своего!)