Недавно я использовал обратный отсчет на странице продукта. Я использовал Jquery Countdown, который действительно замечательный. Я хотел бы синхронизировать таймер с временем сервера, потому что, если пользователь меняет часовой пояс, то на таймер добавляется час (ы), и это основная проблема.
На сайте плагина (на вкладке, называемой часовыми поясами) есть несколько советов, но на самом деле не получить его, как объединить скрипты вместе, а не быть частью бэкэнда.
Это часть моего кода: http://jsfiddle.net/zG9Ta/4/
Пожалуйста, проверьте нижнюю часть моего js, потому что я включил плагин внутри вкладки JS (и он должен был быть сверху).
Любая помощь в том, как объединить мой внешний код с временем сервера?
Заранее спасибо.
Основной JS:
function call(){
$('.countdownclock').countdown({until: new Date(2014, 4-1,10,09,00), timezone:+3, format: 'HMS',padZeroes: true});
}
setTimeout(call,500);
JavaScript работает на стороне клиента, поэтому для того, чтобы JavaScript Date() показывал клиенту время в серверном времени, на стороне сервера (при условии, что контроллер или класс действия), вам нужно будет получить смещение часового пояса сервера как int и перейдите на страницу как параметр. Затем, в свою JS-дату, создайте дату UTC, а затем увеличьте эту дату по смещению.
В вашем контроллере/действии:
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
int tzOffset = tz.getOffset(cal.getTimeInMillis());
В вашем JS:
var wallTimeDate = new Date();
var utcDate = new Date(wallTimeDate.getUTCFullYear(), wallTimeDate.getUTCMonth(), wallTimeDate.getUTCDate(), wallTimeDate.getUTCHours(), wallTimeDate.getUTCMinutes(), wallTimeDate.getUTCSeconds());
var serverDate = new Date(now_utc.getTime() + tzOffset);
Вы можете увидеть все методы для JS Date в W3C JS UTC
После того, как у вас есть дата, передайте ее функции JQuery и используйте ее вместо той, которая у вас есть. Это должно дать вам то, что вам нужно.