На сайте выводить время
<?
$date = new DateTime();
$timestamp = $date->getTimestamp();
?>
<span id="day"><?= date('d', $timestamp) ?></span>.<span id="month"><?= date('m', $timestamp) ?></span>.<span id="year"><?= date('Y', $timestamp) ?></span> <span id="hours"><?= date('H', $timestamp) ?></span>.<span id="min"><?= date('i', $timestamp) ?></span>.<span id="sec"><?= date('s', $timestamp) ?></span>
<script type="text/javascript">
$(document).ready(function() {
var YEAR = <?= date('Y', $timestamp) ?>;
var MONTH = <?= date('m', $timestamp) ?>;
var DAY = <?= date('d', $timestamp) ?>;
var HOUR = <?= date('H', $timestamp) ?>;
var MINUTE = <?= date('i', $timestamp) ?>;
var SECOND = <?= date('s', $timestamp) ?>;
setTimeout(updateDateTime, 1000);
setTimeout(syncDateTime, 1000 * 60 * 15);
//////////////////////
function syncDateTime() {
$.getJSON('/get_date.php', function(dateTime){
console.log(dateTime);
YEAR = parseInt(dateTime.year);
MONTH = parseInt(dateTime.month);
DAY = parseInt(dateTime.day);
HOUR = parseInt(dateTime.hour);
MINUTE = parseInt(dateTime.minute);
SECOND = parseInt(dateTime.second);
});
setTimeout(syncDateTime, 1000 * 60 * 15);
}
function updateDateTime() {
$("#year").html(YEAR);
$("#month").html(getTwoDigit(MONTH));
$("#day").html(getTwoDigit(DAY));
$("#hours").html(getTwoDigit(HOUR));
$("#min").html(getTwoDigit(MINUTE));
$("#sec").html(getTwoDigit(SECOND));
SECOND += 1;
if (SECOND === 60) {
SECOND = 0;
MINUTE += 1;
}
if (MINUTE === 60) {
MINUTE = 0;
HOUR += 1;
}
if (HOUR === 24) {
HOUR = 0;
DAY += 1;
}
if (DAY === daysInMonth() + 1) {
DAY = 0;
MONTH += 1;
}
if (MONTH === 12) {
MONTH = 0;
YEAR += 1;
}
setTimeout(updateDateTime, 1000);
}
function daysInMonth() {
return new Date(YEAR, MONTH, 0).getDate();
}
function getTwoDigit(number) {
return (parseInt(number) < 10 ? '0' : '') + number;
}
});
</script>
делаю уже синхронизацию каждые 15 мин:
<?
$date = new DateTime();
$timestamp = $date->getTimestamp();
$dateTime = array();
$dateTime['day'] = date('d', $timestamp);
$dateTime['month'] = date('m', $timestamp);
$dateTime['year'] = date('Y', $timestamp);
$dateTime['hour'] = date('H', $timestamp);
$dateTime['minute'] = date('i', $timestamp);
$dateTime['second'] = date('s', $timestamp);
echo json_encode($dateTime);
?>
Но время убегает на 1-2 мин назад бывает. по крайней мере в хроме (как понимаю из за таймингов в браузере). В файрфоксе всё ровно. Есть какое нить решение чтобы время сервера всегда чётко шло в реалтайме?
P.s. время надо брать серверное а не локально.