Отправить php дату в javascript и увеличить ее

Я хочу получить серверное время, используя 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?

0

Решение

Вы можете просто вывести дату 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;
}

FIDDLE

1

Другие решения

Два пути. Во-первых, используя 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);
1

Я нашел другую вопрос это было в основном после того же самого. Инициализировал дату 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>
1

Вы можете поместить вашу переменную php в скрытый вход:

<input id="your_input" value="<?php echo $my_var; ?>">

и получить его в JavaScript с помощью:

my_var = document.getElementById('your_input').value;

1