为什么我的Ajax时钟没有占用服务器的时间?

时间:2018-11-26 08:08:23

标签: javascript php jquery json ajax

我正在实现一个应该在服务器上获取时间的ajax时钟。我有太平洋时间。但是我的时钟无法占用服务器的时间,并且似乎显示了随机时间。我不知道为什么。

这是我当时在客户端的脚本:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
            <script type="text/javascript">
                var start_time;
                var current_time;

                //gets current server time
                var get_time = function () {
                    $.ajax({
                        type: 'GET',
                        url: '../Server_Side/clock.php',
                        data: ({ action : 'get_time' }),
                        success: (function (data) {
                            start_time = new Date(
                                data.year,
                                data.month,
                                data.day,
                                data.hour,
                                data.minute,
                                data.second
                           //comment
                            );
                            $('#clock').html(current_time.toLocaleTimeString("en-US", {timeZone:'America/Vancouver'}));
                        }),
                        dataType: 'json'
                    });
                }

                //counts 0.25s
                var cnt_time = function () {
                    current_time = new Date(start_time.getTime() + 250);
                    $('#clock').html(current_time.toLocaleTimeString("en-US", {timeZone:'America/Vancouver'}));
                    start_time = current_time;
                }

                setInterval(cnt_time, 250); //add 250ms to current time every 250ms
                setInterval(get_time, 30250); //sync with server every 30,25 second
                get_time();
            </script>

这就是我在服务器端的时钟:

<?php
if ( isset($_GET['action']) && !empty($_GET['action']) && $_GET['action'] == 'get_time' ) {
    header('Content-type: application/json');
    echo json_encode (
        array (
              'year' => date('Y'),
                'month' => date('m'),
                'day' => date('d'),
                'hour' => date('h'),
                'minute' => date('i'),
                'second' => date('s')
            )
        );
    }
else {
    header('HTTP/1.1 404 Not Found');
    echo '<h1>404 Not Found</h1>';
    echo '<p>The page that you have requested could not be found.</p>';
}
?>

1 个答案:

答案 0 :(得分:0)

date('m')将返回01直到12。您可能想要date('n') - 1,它返回0到11。对于JS Date对象,第二个参数接受monthIndex,它只接受0(一月)至11(十二月)。

参考文献: