Как предоставить значение для метода javascript Date.setTime () из PHP? - PullRequest
1 голос
/ 04 февраля 2009

Время ()? Это время (). 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, верно?

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

<script type="text/javascript">

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

</script>

И это действительно мое местное время. Таким образом, предположение.

Можно ли вообще указать часовой пояс для времени ()?

Ответы [ 3 ]

2 голосов
/ 04 февраля 2009

Date.setTime ожидает число миллисекунд с 1970-1-1. php time function возвращает число секунд с 1970-1-1. Поэтому вы можете просто использовать

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

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

1 голос
/ 04 февраля 2009

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

0 голосов
/ 04 февраля 2009

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

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

...