Как передать значение методу Javascript Date.setTime() из PHP?

StackOverflow https://stackoverflow.com/questions/511721

  •  21-08-2019
  •  | 
  •  

Вопрос

Пришло время()?Это время().substr(microtime(), 2, 2)?Это время().substr(microtime(), 2, 3)?

Немного потерялся со следующим фрагментом.

function updateClock ( ) {
    var timeStamp = <?php echo time().substr(microtime(), 2, 2);?>;
    var currentTime = new Date ( );
    currentTime.setTime( timeStamp );

    ...
    ...
}

Моя цель — использовать время сервера и начать отсчитывать оттуда время в окне клиентского браузера.Код выше либо возвращает текущее время клиентского компьютера, либо где-то в 1973 году.Думаю, я не получаю правильный формат отметки времени для setTime()?

Спасибо!

  • 1000

Я попробовал это, но на веб-странице по-прежнему отображается мое местное время после загрузки js.php (рендеринга кода JavaScript) на мой сервер.Мой сервер отличается от моего по времени примерно на 12 часов.Я предполагаю, что php учитывает время работы на стороне клиента()?Я имею в виду, что браузеры отправляют время запроса на Apache, верно?

Я скопировал возвращаемое значение time() * 1000 с веб-страницы, запущенной на моем сервере, и вставил его на локальную страницу:

<script type="text/javascript">

var d = new Date();
d.setTime(1233760568000);
document.write(d);

</script>

И это действительно мое местное время.Итак, догадка.

Можно ли как-нибудь указать часовой пояс для time()?

Это было полезно?

Решение

Дата.setTime ожидает количество миллисекунды с 1970-1-1.php функция времени дает количество секунды с 1970-1-1.Поэтому вы можете просто использовать

var TimeStamp = <?php echo time()*1000;?>

Однако из-за проблем с задержкой (браузерам необходимо загрузить всю страницу перед запуском JavaScript) время обычно отклоняется на одну или пару секунд.

Другие советы

Умножьте на 1000.JavaScript ожидает миллисекунды, а PHP возвращает секунды.

Date.setTime() запрашивает миллисекунды с начала эпохи Unix, а time() возвращает секунды с тех пор.Если абсолютная точность не требуется (а, учитывая вашу методологию, я так не думаю), просто умножьте значение, полученное из time(), на 1000.

Редактировать:избит дважды - ох

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top