setInterval(function(){
var ss = "<?php echo Date('Y-m-d H:i:s'); ?>";
console.log(ss);
}, 1000);
У меня есть этот маленький код. Дата занимает один раз, а затем все время результат один и тот же.
(12) 2014-10-19 19:42:54
Как я могу это исправить?
Если вы пытаетесь получить часы, которые увеличиваются на секунду, как и любые другие часы, вам придется использовать javascript для его реализации, и вам вообще не нужен PHP для этого.
Отредактированный ответ для использования времени сервера
function checkTime(i) {
if (i<10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
var today=new Date('<?php print date("F d, Y H:i:s", time())?>');
function setTime() {
today.setSeconds(today.getSeconds()+1)
var year=today.getFullYear();
var month=today.getMonth();
var day=today.getDate();
var hour=today.getHours();
var minute=today.getMinutes();
var second=today.getSeconds();
minute = checkTime(minute);
second = checkTime(second);
month = checkTime(month);
var time = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;
console.log(time);
}
setInterval(startTime, 1000);
Попробуй это:
var unixtime = <?=date('U')?>;
setInterval(function()
{var date = new Date();
date.setTime(++unixtime * 1000);
var ss = date.getFullYear() + '-'
+ (date.getMonth() < 9 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1)) + '-'
+ (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
+ (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
+ (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
+ (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
console.log(ss);
}, 1000);
Откройте исходный код страницы и вы увидите, что полученный HTML выглядит примерно так:
<script>
setInterval(function(){
var ss = "2014-10-19 20:52:12";
console.log(ss);
}, 1000);
</script>
PHP скрипт — это серверная программа, которая выводит некоторый HTML, который отображает браузер. Поэтому нет ничего удивительного в том, что вы сталкиваетесь с таким поведением.
Если вы хотите создать таймер в javasctipt, вам нужно использовать Date
экземпляр объекта:
setInterval(function() {
var d = new Date(),
ss = d.getFullYear() + '-' + d.getMonth(); // etc.. formate you date
console.log(ss);
}, 1000);
обращаться Date
документация для доступных методов.
Вы должны обновлять свою дату в JavaScript в каждом вызове setInterval.
Когда вы создаете статический код с использованием php, он определяет функцию JavaScript с фиксированным значением даты. Тело этой функции не переопределяется после каждого вызова, потому что генерируется определенная дата.