Como fornecer um valor para o Date.setTime método javascript () do PHP?
-
21-08-2019 - |
Pergunta
É hora ()? É hora (). Substr (microtime (), 2, 2)? É hora (). Substr (microtime (), 2, 3)?
meio perdido com o seguinte trecho.
function updateClock ( ) {
var timeStamp = <?php echo time().substr(microtime(), 2, 2);?>;
var currentTime = new Date ( );
currentTime.setTime( timeStamp );
...
...
}
Meu objetivo é usar o tempo de servidor e começar correndo de lá na janela do navegador do cliente. O código acima, quer retorna a hora do computador cliente atual ou em algum momento de 1973. Eu acho que eu não estou recebendo o formato de data e hora certa para setTime ()?
Obrigado!
- 1000
Eu tentei isso, mas a página web ainda mostra meu horário local depois de eu fazer o upload do js.php (tornando o código javascript) para o meu servidor. Meu servidor é de aproximadamente 12 horas no tempo diferente de mim. Meu palpite é que não php leva tempo do lado do cliente em conta tempo de execução ()? I navegadores médios não enviar tempo pedido para apache certo?
Copiei o time () * 1000 valor retornado a partir da página web corrida no meu servidor e colou-a em uma página local:
<script type="text/javascript">
var d = new Date();
d.setTime(1233760568000);
document.write(d);
</script>
E é de fato o meu tempo local. Assim, a suposição.
Existe uma maneira de especificar o fuso horário para o tempo ()?
Solução
Date.setTime espera que o número de milissegundos desde 1970/01/01. href="http://php.net/time" rel="nofollow noreferrer"> função do php produz o número de segundos desde 1970/01/01. Portanto, você pode simplesmente usar
var TimeStamp = <?php echo time()*1000;?>
Devido a problemas de latência (as necessidades navegadores para carregar a página inteira antes de iniciar JavaScript), o tempo geralmente deriva de um ou dois segundos embora.
Outras dicas
Multiply por 1000. JavaScript espera milissegundos, enquanto PHP retorna segundos.
Date.setTime () quer milissegundos desde o Unix Epoch, e tempo () retorna segundos desde então. Se precisão absoluta não é necessária (e dada a sua metodologia, eu não acho que é), basta multiplicar o valor que você recebe de time () em 1000.
Edit: batido duas vezes - D'oh