@z_u_l

Как увличить серверное время на час?

Есть серверное время, обновляющееся в реальном времени.

index.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<div id="timer"></div>

<button id="plus">+</button>
<button id="minus">-</button>

<script>
    $(document).ready(function() {

        function update() {
          $.ajax({
           type: 'POST',
           url: 'datetime.php',
           timeout: 1000,
           success: function(data) {
              $("#timer").html(data); 
              window.setTimeout(update, 1000);
           }
          });
        }
        update();

        $('#plus').click(function(){ 
            $.ajax({ 
                type: "POST",
                url: 'datetime.php',
                //...
            })
        });

    });
</script>

</body>
</html>


datetime.php

<?php 
    $msg     = date('d/m/Y h:i:s');
    $msgPlus  = date('d/m/Y h:i:s', strtotime("+1 hour"));
    $msgMinus = date('d/m/Y h:i:s', strtotime("-1 hour"));
    echo $msg;
?>


При клике на + серверное время должно увеличиваться на час. Как реализовать такое? Как ajax'ом вытащить переменную msgPlus из php и вставить в div id="timer"?
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 2
solotony
@solotony
покоряю пик Балмера
из php ты переменную не вытащищь

надо

либо а) возвращать все 3 переменные сформировав JSON

либо б) передавать время (лучше числом) клиенту и клиентом уже вычислять локальное время с учетом своего сдвига.

либо в) передавать серверу параметр (например +1, -1, 0) и анализируя его возвращать то или иное значение
Ответ написан
Комментировать
@Bel0g0r
Если тебе нужно вытащить просто само время на час больше или меньше, то просто передай нужный критерий (+ или -).
А на сервере сделай так:

switch($_POST['znachenie']){
		case "-": $time = time()-3600; $msg = date(date('d/m/Y h:i:s', $time); break;
		case "+": $time = time()+3600; $msg = date(date('d/m/Y h:i:s', $time); break;
		case "none": $msg = date(date('d/m/Y h:i:s', time());break;
	}
    echo $msg;

Если передал плюс, то получил на час больше, а если минус, то на час меньше.
А если передал none то текущее время.

А если нужно плюсом изменить время на час больше для постоянного вывода, что бы всегда на час больше было, даже когда none передан. И при повторном нажатии на плюс, еще на час больше(2час в сумме). То записывай в сессию значение сдвига секундах.
switch($_POST['znachenie']){
		case "-": $_SESSION['time_sdvig'] -= 3600; $time = time()-$_SESSION['time_sdvig']; $msg = date(date('d/m/Y h:i:s', $time); break;
		case "+": $_SESSION['time_sdvig'] += 3600; $time = time()+3600; $msg = date(date('d/m/Y h:i:s', $time); break;
		case "none": $msg = date(date('d/m/Y h:i:s', $_SESSION['time_sdvig']);break;
	}
    echo $msg;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы