Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Текущее время из браузера, заменить на значение из сервера
 
 автор: Den*s   (12.05.2015 в 00:41)   письмо автору
 
 

Есть код, который я не до конца понимаю

var currentDate = function () {
            // get client's current date
            var date = new Date();

            // turn date to utc
            var utc = date.getTime() + (date.getTimezoneOffset() * 60000);

            // set new Date object
            var new_date = new Date(utc + (3600000*settings.offset))

            return new_date;
        };


Это часть из плагина отсчёта обратного времени
Хочу заменить date.getTime() на <?=time();?>, но только не понимаю комбинаций
var utc = date.getTime() + (date.getTimezoneOffset() * 60000);
var new_date = new Date(utc + (3600000*settings.offset))

Причина: при отсчёте обратного времени плагин берёт текущее время из браузра, а оно у многих разное.

  Ответить  
 
 автор: confirm   (12.05.2015 в 05:35)   письмо автору
 
   для: Den*s   (12.05.2015 в 00:41)
 

Хочу заменить date.getTime() на <?=time();?>

Не получится:

time() - возвращает локальное время сервера
new Date() - это объект, и заменить его строкой нельзя
date.getTimezoneOffset() - это смещение часового пояса клиента

Нужно работать либо с UTC временем, либо на основании смещения часовых поясов сервера и клиента, корректировать время на клиенте, если необходимо работать по времени сервера. Иначе как и есть в плагине - текущее время клиента корректируется его часовым смещением, поэтому и счетчик закончит работу у каждого клиента в разное время.

  Ответить  
 
 автор: Den*s   (12.05.2015 в 17:04)   письмо автору
 
   для: confirm   (12.05.2015 в 05:35)
 

Функция возвращает дату в своём формате, тоже судя по всему возвращает объект
Никак нельзя обхитрить строку
var new_date = new Date(utc + (3600000*settings.offset))
на
var new_date = <?=date("D M j G:i:s T Y", time());?>;

Может есть в php что то аналогичное.
Всё же можно как то сказать функции что бы время бралось с сервера а не из браузера ...
ведь utc + (3600000*settings.offset) это сё же цифра, её как то подменить ...

  Ответить  
 
 автор: Den*s   (12.05.2015 в 17:23)   письмо автору
 
   для: Den*s   (12.05.2015 в 17:04)
 

как ни будь вот так

<script>
            
  // get client's current date
  var date = new Date();

  // turn date to utc
  var utc = date.getTime() + (date.getTimezoneOffset() * 60000);

  // set new Date object
  var new_date = new Date(utc + (3600000));
  var tmp = date.getTime()/1000;
  tmp = tmp + "";
  var tmp2 = tmp.split(".");
  
  var tmp3 = "" + <?=time();?> + "" + tmp2[1];
  
  var utc = parseInt(tmp3) + (date.getTimezoneOffset() * 60000);
  
  var new_date = new Date(utc + (3600000*3));
  
  alert(new_date);
  
  
</script>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования