Я хочу получить серверное время, используя php, и передать его в переменную javascript.
Как только это передано, это будет увеличиваться.
Вот мой код:
function initTime(date){
var today=new Date(date);
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('time').innerHTML = h+":"+m+":"+s;
}
function checkTime(i) {
if (i<10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
Ситуация:
Пользователь просматривает страницу приветствия, серверное время отправляется и принимается с помощью javascript.
Я хочу увеличить его, чтобы он стал часовым скриптом. Я не хочу получать серверное время каждую секунду, используя php, потому что он будет использовать больше ресурсов сервера.
Как я могу увеличить его с помощью JavaScript?
Вы можете просто вывести дату PHP где-нибудь, либо в глобальной переменной, либо в качестве атрибута данных, где вы можете получить ее
<div id="time" data-now="<?php echo time() * 1000; ?>"></div>
а потом
var elem = document.getElementById('time');
var timer = setInterval(initTime, 1000);
function initTime() {
var time = +(elem.getAttribute('data-now')),
time = time + 1000; // add one second
var today = new Date( time ),
h = today.getHours(),
m = today.getMinutes(),
s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
elem.innerHTML = h + ":" + m + ":" + s;
elem.setAttribute('data-now', today.getTime());
}
function checkTime(i) {
if (i < 10) {
i = "0" + i
}; // add zero in front of numbers < 10
return i;
}
Два пути. Во-первых, используя moment.js:
setInterval(function() {
document.getElementById('time').innerHTML = moment().format('HH:mm:ss');
},1000);
или используя вашу функцию:
function initTime(date){
var today=new Date(date);
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('time').innerHTML = h+":"+m+":"+s;
}
function checkTime(i) {
if (i<10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
setInterval(initTime(date),1000);
Я нашел другую вопрос это было в основном после того же самого. Инициализировал дату JS, используя миллисекунды из php:
<script type="text/javascript">
var d = new Date(<?php echo time() * 1000 ?>);
</script>
Вот jQuery плагин часов что вы можете использовать, что вы можете кормить время начала (время вашего сервера). Собрав все воедино, получилось бы что-то вроде этого:
<script type="text/javascript">
var d = new Date(<?php echo time() * 1000 ?>);
$("#clock").clock({"timestamp":d.getTime()});
</script>
Вы можете поместить вашу переменную php в скрытый вход:
<input id="your_input" value="<?php echo $my_var; ?>">
и получить его в JavaScript с помощью:
my_var = document.getElementById('your_input').value;