PHP中设置时区方法小结

2015-01-24信息快讯网

今天发现一段PHP代码中的时间判断语句出了点问题,研究了一下发现问题出在PHP的时区设置上,PHP所取的时间默认是格林威治标准时间,所以和北京时间相差8小时

找到原因后,在网上搜索到了一些关于PHP的时区设置方法:

1、修改php.ini,在php.ini中找到data.timezone =去掉它前面的;号,然后设置data.timezone = “Asia/Shanghai”;即可。

2、在程序PHP 5以上版本的程序代码中使用函数ini_set('date.timezone','Asia/Shanghai');或者date_default_timezone_set(‘Asia/Shanghai');

一些常用的时区标识符说明:

Asia/Shanghai C 上海
Asia/Chongqing C 重庆
Asia/Urumqi C 乌鲁木齐
Asia/Hong_Kong C 香港
Asia/Macao C 澳门
Asia/Taipei C 台北
Asia/Singapore C 新加坡


函数设置时区方法:
 
<?php 
function_exists(date_default_timezone_set);//在这他总是返回1,这函数是判断这里面的字符是不是一个定义了的函数名 
date_default_timezone_set("Etc/GMT");//这是格林威治标准时间,得到的时间和默认时区是一样的 
date_default_timezone_set("Etc/GMT+8");//这里比林威治标准时间慢8小时 
date_default_timezone_set("Etc/GMT-8");//这里比林威治标准时间快8小时 
date_default_timezone_set('PRC'); //设置中国时区 
?> 


函数ini_set()设置时区:
可以在文件开头加入 ini_set('date.timezone','Asia/Shanghai'); // 'Asia/Shanghai' 为上海时区

手动修改php.ini设置
打开php找到date.timezone = "PRC" 如有去掉前面的分号,没有的话手动添加!

以下是一些资料补充:

装上PHP5后你会发现这样的问题

$atime=date("Y-m-d H:i:s");
echo $atime;
?>
输出:2006-05-16 06:36:06
现在几点了?/我的是14:36
这是为什么捏?
原因是假如你不在程序或配置文件中设置你的服务器当地时区的话
PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入
格林威治标准时间和北京时间大概差8个小时左右 那么我们如何避免时间误差呢?
我们一起来看看解决方法:
在页头使用date_default_timezone_set()设置我的默认时区为北京时间
 
<? 
date_default_timezone_set('PRC'); 
echo date('Y-m-d H:i:s'); 
?> 

时间和服务器当前时间一样了!
另外附date_default_timezone_set用法如下:
------------------------------------------------------------------------------------
date_default_timezone_set
(PHP 5 >= 5.1.0RC1)
date_default_timezone_set -- 设定用于一个脚本中所有日期时间函数的默认时区
说明
bool date_default_timezone_set ( string timezone_identifier )
date_default_timezone_set() 设定用于所有日期时间函数的默认时区。
注: 自 PHP 5.1.0 起(此版本日期时间函数被重写了),如果时区不合法则每个对日期时间函数的调用都会产生一条 E_NOTICE 级别的错误信息。
参数
timezone_identifier
时区标识符,例如 UTC 或 Europe/Lisbon
返回值
本函数永远返回 TRUE(即使 timezone_identifier 参数不合法)。
-------------------------------------------------------------------------------------
或者修改 php.ini 中 date.timezone 值
date.timezone = PRC

装上PHP5后你会发现这样的问题
$atime=date("Y-m-d H:i:s");
echo $atime;
?>
输出:2006-05-16 06:36:06
现在几点了?/我的是14:36
这是为什么捏?
原因是假如你不在程序或配置文件中设置你的服务器当地时区的话
PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入
格林威治标准时间和北京时间大概差8个小时左右 那么我们如何避免时间误差呢?
我们一起来看看解决方法:
在页头使用date_default_timezone_set()设置我的默认时区为北京时间
 
<? 
date_default_timezone_set('PRC'); 
echo date('Y-m-d H:i:s'); 
?> 

时间和服务器当前时间一样了!
另外附date_default_timezone_set用法如下:
------------------------------------------------------------------------------------
date_default_timezone_set
(PHP 5 >= 5.1.0RC1)
date_default_timezone_set -- 设定用于一个脚本中所有日期时间函数的默认时区
说明
bool date_default_timezone_set ( string timezone_identifier )
date_default_timezone_set() 设定用于所有日期时间函数的默认时区。
注: 自 PHP 5.1.0 起(此版本日期时间函数被重写了),如果时区不合法则每个对日期时间函数的调用都会产生一条 E_NOTICE 级别的错误信息。
参数
timezone_identifier
时区标识符,例如 UTC 或 Europe/Lisbon
返回值
本函数永远返回 TRUE(即使 timezone_identifier 参数不合法)。
-------------------------------------------------------------------------------------
或者修改 php.ini 中 date.timezone 值
date.timezone = PRC
解析phpstorm + xdebug 远程断点调试
hadoop常见错误以及处理方法详解
php常用Output和ptions/Info函数集介绍
解析PHP中的正则表达式以及模式匹配
php无限分类且支持输出树状图的详细介绍
具有时效性的php加密解密函数代码
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
php多个字符串替换成同一个的解决方法
解析PHP生成静态html文件的三种方法
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
PHP 使用header函数设置HTTP头的示例解析 表头
PHP之短标签开启设置
php错误级别的设置方法
VIM中设置php自动缩进为4个空格的方法详解
如何设置mysql允许外网访问
PHP跨时区(UTC时间)应用解决方案
PHP中设置时区,记录日志文件的实现代码
PHP通过session id 实现session共享和登录验证的代码
php 函数中使用static的说明
PHP number_format() 函数定义和用法
分享一个PHP数据流应用的简单例子
检查php文件中是否含有bom的函数
php注销代码(session注销)
php在文件指定行中写入代码的方法
php提示undefined index的几种解决方法
PHP中去掉字符串首尾空格的方法
php的array_multisort()使用方法介绍
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
如何用phpmyadmin设置mysql数据库用户的权限
在WINDOWS中设置计划任务执行PHP文件的方法
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
php中设置多级目录session的问题
mysql时区问题
有关 PHP 和 MySQL 时区的一点总结
©2014-2024 dbsqp.com