Я работаю над движком приложения Google. И я работаю над чем-то, что требует от меня что-то сделать, если разница во времени между временем, отправленным клиентом, и временем на сервере составляет менее 15 секунд. Код отлично работает, когда я пробую его на тестовом сервере (на своей машине). Но терпит неудачу, когда я развертываю код на движке приложения. Я предполагаю, что это, вероятно, потому, что если часовой пояс на сервере отличается, при этом может быть добавлено/вычтено несколько часов.
Что я в основном делаю, так это позволяю клиенту отправлять свою временную метку вместе с другими данными. И когда впоследствии серверу нужно вычислить разницу во времени, я вычитаю временную метку сервера из временной метки клиента.
Если часовой пояс другой, то, очевидно, у меня возникнут проблемы.
Я знаю, что одно из решений, позволяющее избежать этого фиаско с часовым поясом, состоит в том, чтобы позволить серверу ставить метку времени как для первоначального запроса, так и для последующей обработки позже, но для моего приложения важно, чтобы таймер начинал тикать сразу после того, как клиент делает запрос, и что если Прошло 15 секунд по отношению к клиенту, после чего сервер не предпринимает никаких действий.
Поскольку я являюсь разработчиком как клиентской, так и серверной части, я могу показать вам, что я сделал.
Пример звонка на стороне клиента
new Register().sendToServer(username,location,new TimeStamp(new Date().getTime()));
это сохраняется в хранилище данных и извлекается немного позже, если выполняются некоторые условия.
Пример на стороне сервера для поиска различий
Date date= new Timestamp(new Date().getTime());
Date d1 = (Date) timeStampList[i];
long timedif = Math.abs(d1.getTime() - date.getTime());
if(timedif <= 15000)
do something;
else
do something else;
В общем, мой вопрос: как мне нормализовать вариации часового пояса?
Благодарность