PHP获取NTP时间服务器上的中国标准北京时间

Nokia 2016/9/7 00:43 | 显示全部楼层
NTP时间服务器可以提供标准时间,可以避免服务器时间差异,javascript获取的浏览器端时间,是非常不准确的,访客可以随意调整时间,而服务器时间,也有可能和标准时间相差甚远,在需要获取相对精确的时间的时候,往往不能依赖客户端和服务器本地时间,而需要从NTP时间服务器得到更加客观标准的时间。
<?php
        /*
         * PHP获取中国标准北京时间
         * PHP获取NTP服务器时间
         * PHP获取时间服务器标准时间 避免服务器时间误差
         * @Author 吴先成 qQ: 13550865073
        */
        ini_set('date.timezone', 'Asia/Shanghai');
        $startTime = microtime(true);
        $resource = @fsockopen('time.nist.gov', 13, $code, $error, 30);
        if($resource){
                stream_set_timeout($resource, 30);
                $response = stream_get_contents($resource);
                // 服务器返回的字符串形如 57637 16-09-06 16:26:17 50 0 0 147.2 UTC(NIST) *               
                $endTime = microtime(true);
                $timeDifference = (int)round($endTime - $startTime);
                if(preg_match('%\d{2}\-\d{2}\-\d{2}\s+\d{2}\:\d{2}\:\d{2}%', $response, $match)){
                        // 得到当前时间戳
                        $timestamp = strToTime('20'.$match[0]) + 3600*8 + $timeDifference;
                        echo date('Y-m-d H:i:s', $timestamp);
                }
        }
?>

手机版|轻松E站

返回顶部 返回列表