校正PHP服务器时间不准的问题

关于怎样解决PHP服务器时间不准的问题,得针对不同的情况进行不同的处理。

下面是经常遇到的情况,及应对办法。

1.PHP服务器时区不对,使用下面代码修正:

<?php
 $timezone = "PRC";
 if(function_exists(‘date_default_timezone_set‘)){
    date_default_timezone_set($timezone);
 }
 echo date(‘d-m-Y H:i:s‘);
 ?>

或修改PHP.INI文件后重新启动IIS或APACHE服务器

date.timezone = RPC

2.PHP服务器的时间不对,不是时区,该问题解决方法如下:

方法一 如果你是管理员,直接去调整服务器的时间,只要服务器时间校正了,就没问题了。

方法二 如果没法修改服务器时间,又要PHP程序显示的时间正确,那得通过PHP代码来实现。具体过程如下:

在全局配置文件中,添加时间提前量。

$webdb[‘correctiontime‘] = ‘-110‘;//把服务器时间减去110秒

书写时间显示函数:

//格式化时间为年月日
function day($time = ‘‘) {
    global $webdb;
    if (!$time) {
        $time = time();
    }
    return date("Y/m/d",$time+$webdb[correctiontime]);
}
//格式化时间为年月日时分秒
function daytime($time = ‘‘) {
    global $webdb;
    if (!$time) {
        $time = time();
    }
    return date("Y/m/d H:i:s",$time+$webdb[correctiontime]);
}
//格式化时间为[2012/06/30 18:24]
function dayshorttime($time = ‘‘) {
    global $webdb;
    if (!$time) {
        $time = time();
    }
    return date("Y/m/d H:i",$time+$webdb[correctiontime]);
}

最后,在所有要显示PHP时间的地方,调用上面3个函数中的其中一个。

平时还是喜欢用最后一种方法,因为不能保证虚拟服务器的时间是完全准确的世界时间。

如果你有系统管理权限,那又另当别论。

转自:https://www.cnblogs.com/ccode/p/3905943.html

原文地址:https://www.cnblogs.com/7qin/p/10189852.html

时间: 12-28

校正PHP服务器时间不准的问题的相关文章

linux命令更改服务器时间

1. linux更改服务器时间: 权限:root用户才有权限更改服务器时间 使用date命令即可设置系统时间. 2. 查看系统时间 date 3. 设置当前系统时间为2015年5月8日19点48分0秒 date -s "2015-05-08 19:48:0"

使用ntpdate命令同步服务器时间出现“the NTP socket is in use, exiting”

今天将一台Centos服务器还原快照后,出现了如下问题: 然后使用ntpdate命令手动同步服务器时间,出现如下提示: [[email protected] tools]# ntpdate 220.231.55.106 4 Nov 12:02:59 ntpdate[29800]: the NTP socketis in use, exiting 解决方法: 第一步:#service ntp stop 第二步:#ntpdate ntp.neu.edu.cn 问题得到解决:

Javascript获取服务器时间

Javascript是运行在客户端的脚本,我们一般都用new Date()来获取当前时间,但是得到的是客户端的时间,客户端时间是随意更改的,如果要做一个产品发布倒计时的话,客户端时间一改,就要闹笑话了.业务中需要用到服务器时间的场景还有很多,那么仅仅通过js怎么拿到服务器时间呢?事实上,只需要一个ajax请求就搞定,通过读取XMLHttpRequest对象的请求头里面的时间戳得到当前服务器时间! 原理就是这么简单:通过ajax向服务器发送请求,当服务器收到请求后即可读取请求头的时间戳了,不管请求

Windows服务器时间不断修改(时间不同步已解决)

一台域内的服务器时间不停地被修改,我先向用户收集了一些信息 只有这一台出现此问题,其他服务器均为正常 系统版本\服务器用途(考虑是否有软件会造成此问题)\日志信息\是否为虚拟机 1.系统版本是Server 2008 数据中心版 2.用途就是一台做图的服务器 3.日志信息如下图,这个日志是系统日志,事件ID为1,时间从2016-7-21 00:50:59 被改为 2016-07-21 08:32:31 4.是Vmware虚拟机 = = 第一天 1)确定服务器的时间服务是否为正常启动 2)查看虚拟机

二、Java Web -- 使用servlet显示服务器时间

一.在项目下创建如下包.及servlet 生成servlet如下: @WebServlet(name="TimmerServlet" ,urlPatterns = "/showtime.do" ) public class TimmerServlet extends HttpServlet { private static final long serialVersionUID = 1L; public TimmerServlet() { super(); } pr

Linux服务器时间不准确

其中一个服务器时间总是和其他服务器时间不同,慢了两秒,影响了测试人员工作. 处理方法: 硬件时钟与系统时钟同步: hwclock --hctosys or clock --hctosys 系统时钟和硬件时钟同步: hwclock --systohc or clock --systohc

客户端操作判断以服务器时间为准

有一个道具是否过期的需求, 界面上实时改变时钟的状态. 1. 绿色没有过期 2. 红色已经过期 客户端时间: 2016-1-15-17:50; 服务器时间: 2016-1-15-17:51; 一旦道具时间已经过期了.我们就需要把时钟状态改成红色.   解决方案:        1. 使用客户端时间,判断道具是否过期. 忽略这个时间戳        2. 每次判断的时候,获取服务器时间,查看道具是否已经过期.        3. 在登录游戏的时候                    1. 获取一

SQL查询出当前服务器时间是否在表T1时间段内,如果有则选择出

表T1 开始 时间         结束时间          09:00:00          12:00:00      14:00:00          17:00:00 查询出当前服务器时间是否在表T1时间段内,如果有则选择出 选出的sql结果集如下,求SQL,  注:SQL2000环境 开始 时间         结束时间           14:00:00          17:00:00 方法一: DECLARE @t TABLE (     beginTime CHAR(

Socket入门-获取服务器时间实例

daytimetcpsrv.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <time.h> int main(int argc,char *

Linux服务器时间同步方法

一般稍微大点的项目都会部署到好几台服务器做集群,同一个应用可能部署到几台服务器上,而处理业务中必须让不同的服务器上时间保持一致,这就需要进行服务器间的时间同步.我的做法是: 1,选择其中一台对外网开放的服务器,以root用户设置crontab定时任务,每天23:30自动同步网上时间,其中ntp.api.bz为 NTP服务器(上海) 30 23 * * * root /usr/sbin/ntpdate ntp.api.bz 2,其余服务器,以root用户设置crontab定时任务,每10分钟与上面