Есть ли способ получить реальную текущую временную метку UTC, не завися от времени клиента, которое может быть неправильно установлено на каждом клиенте?
Я знаю, с помощью getTime()
я могу получить getTime()
метку UTC в миллисекундах. Он не зависит от часового пояса клиента, но я думаю, что он зависит от текущего времени клиента.
Я пытаюсь сделать часы в реальном времени, которые показывают реальное время UTC, поэтому не имеет значения, установлено ли время клиента правильно или нет, чтобы оно было правильным.
Получите этот JSON:
http://json-time.appspot.com/time.json
Или
http://www.timeapi.org/utc/now
Также вы можете получить его со своего сервера, если он у вас есть.
Пример первого (с интервалом):
HTML:
<div id="time">Click the button</div> <button id="gettime">Get the time</button>
JAVASCRIPT (с JQuery):
$("#gettime").click(function() { setInterval(ajaxCalltoGetTime, 1000); }); function ajaxCalltoGetTime() { $.ajax({ type: "GET", url: 'http://json-time.appspot.com/time.json', dataType: 'jsonp' }) .done(function( msg ) { $("#time").html(msg.hour + ":" + msg.minute + ":" + msg.second ); });
JSFiddler: http://jsfiddle.net/op8xdsrv/
Вы можете доверять часам своего сервера *. Просто отправьте текущую временную метку UNIX с сервера на клиент. Затем можно использовать в JavaScript Date(value)
constructor.
<script> var serverTime = new Date(<? php echo time(); ?> * 1000); console.log( serverTime.getUTCFullYear(), serverTime.getUTCMonth() + 1, serverTime.getUTCDate(), serverTime.getUTCHours(), serverTime.getUTCMinutes(), serverTime.getUTCSeconds() ); // use this time to seed your JavaScript clock </script>
* Вообще говоря , серверы периодически синхронизируют свое время с провайдером времени.
вы можете использовать timeanddate api для получения даты и времени без зависимости от клиентской машины или вашего сервера в php. Затем отправьте его на javascript.