快捷搜索:

php时区设置方法总结,时区的一点总结

2019-11-18 15:30栏目:计算机网络
TAG:

PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为 'Asia/Shanghai' 即可。但是通常共享虚拟主机本身没有修改 php.ini 权限。这个时候就应该在程序公共部分加入

以下的文章主要介绍的是关于PHP和MySQL数据库时区的一些小知识,但是因为我暂时使用国外的空间,所以在我发布 Blog 的时候,时间总是出问题。依据我以前编写程序的经验,这是MySQL数据库时区的问题。

大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore

最近在学习PHP过程中发现PHP中的格式化时间戳比北京时间晚了8个小时,上网搜索发现原来是时区不对,解决办法是:

ini_set('date.timezone','Asia/Shanghai');动态修改 php.ini 的设置。之后可以测试一下时间是否正确:

这个问题解决起来并不难,写下我的解决途径以便日后参考。

其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC

     1、永久修改

var_dump(date());如果服务器的本地时间是正确的,那么一般就能解决问题了。附,PHP 5.1 以上提供了专门的函数修改对应的时区:

PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为 'Asia/Shanghai' 即可。但是通常共享虚拟主机本身没有修改 php.ini 权限。这个时候就应该在程序公共部分加入

一,Linux设置时区,以CentOS5.5为例:

          更改php.ini文件中的data.timezone = PRC  这是中国时间。重启Apache服务后生效。

date_default_timezone_set('Asia/Shanghai');建议使用此函数,因为更通用一些。对应 'Asia/Shanghai' 其他可以使用的大陆时区还有:Asia/Chongqing 、Asia/Shanghai 、Asia/Urumqi (依次为重庆,上海,乌鲁木齐);港台地区可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次为澳门,香港,台北);还有新加坡:Asia/Singapore;其他可用的值是:Etc/GMT-8、Singapore、Hongkong、PRC;老外好像把北京漏调了。

ini_set('date.timezone','Asia/Shanghai'北京租车网 北京搬家公司);

 代码如下

     2、临时修改

但是,在我修改成功 PHP 端的时区以后发现日期并没有正确的记录下来。这个时候我考虑是否是数据库的问题。果不其然,因为程序插入的函数并没有调用 PHP 的时间,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。这个时候就要考虑是否能修改 MySQL 方面的时区。

动态修改 php.ini 的设置。之后可以测试一下时间是否正确:

cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

          在使用格式化输入时间之前,添加ini_set('date.timezone','Asia/Shanghai');    
          或者data_default_timezone_set('PRC');//date_default_timezone_set() 函数设置用在脚本中所有日期/时间函数的默认时区。

参考了 MySQL 的文档,发现一个可行的 SQL 语句为:

var_dump(date()); 
  1. MySQL中设置时区

看看其他小伙伴遇到的问题

SET GLOBAL time_zone = '+8:00'; 其中 '+8:00' 是东八区的表示方法,其他的市区依次类推。而我在数据库模型中插入改语句发现权限不够(该死的虚拟主机提供商)。接下来我调试了很多语句,比如:

如果服务器的本地时间是正确的,那么一般就能解决问题了。附,PHP 5.1 以上提供了专门的函数修改对应的时区:

编辑MySQL配置文件:my.cnf/my.ini,在[mysqld]下加上:

  之前有一个遗留问题,就是echo date("Y-m-d H:i:s",time())回来的时间总是与实际时间对不上,今天终于在网上找到了原因和解决方法,分享如下:

DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR);显示时区的 SQL 语句:

date_default_timezone_set('Asia/Shanghai'); 

 代码如下

补充一点,按照下面提示的方法修改php.ini找不到date.timezone 这行,是不是就没办法了呢,当然不是啦,哈哈没有的话就自己加嘛,自己动手丰衣足食。加了这样一句date.timezone = "PRC",问题就搞定了,高兴

SHOW VARIABLES LIKE 'system_time_zone'等等。而由于 MySQL 权限的限制并没有彻底的解决方案。我 Google 了下,发现老外这个有一个非常好的解决方案。但是他需要修改每条插入数据的 SQL 语句。这样的方案并不是非常的有效,一旦数据库时区改成正常,那么相应的 SQL 语句又要改回来。

建议使用此函数,因为更通用一些。对应 'Asia/Shanghai' 其他可以使用的大陆MySQL数据库时区还有:Asia/Chongqing 、Asia/Shanghai 、Asia/Urumqi 依次为重庆,上海,乌鲁木齐);港台地区可用:

default-time-zone = '+8:00'

从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的

而我考虑既然 PHP 端已经可以正确的解决时间的问题了。MySQL 数据库方面虽然可以使用相应的函数解决,但是如果日后迁移到别的主机环境又要改回来。而相应的字段是一个 TIMESTAMP 类型的,默认的值为 CURRECT_TIMESTAMP,当然是可以指定时间的。

Asia/Macao、Asia/Hong_Kong、Asia/Taipei依次为澳门,香港,台北);还有新加坡:Asia/Singapore;其他可用的值是:Etc/GMT-8、Singapore、Hongkong、PRC;老外好像把北京漏调了。

实际上,如果MySQL所在OS的时区已经设置正确,则可以不用在MySQL中设置时区,因为MySQL服务启动的时候,会自动采用OS的时区。

也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差了正好8个小时,有以下3中方法可以恢复正常的时间。

那么我的做法就是让 PHP 插入当前正确的时间,这样虽然程序方面需要做相应的修改。不过日后配置修改起来只要修改一处就可以了。最后插入数据库的时间注意一下格式:

但是,在我修改成功 PHP 端的时区以后发现日期并没有正确的记录下来。这个时候我考虑是否是数据库的问题。果不其然,因为程序插入的函数并没有调用 PHP 的时间,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。这个时候就要考虑是否能修改 MySQL 方面的时区。

  1. PHP中设置时区

1,最简单的方法就是不要用php5.1以上的版本

date('Y-m-d H:i:s')这样就可以解决问题了。附,一些非常好的参考资料:

参考了 MySQL 的文档,发现一个可行的 SQL 语句为:

在PHP配置文件PHP.ini中:

2,如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的上面加上 date_default_timezone_set (XXX);

 
 
 
 
更新:由此 wiLdGoose 兄说他也碰到同样的问题,但是无法解决。结果经过种种的假设和判断以后,到最后发现原来是 Zend Studio 的时区配置问题(我狂汗ing)。看来除去运行环境,开发环境也是需要注意以下的。
今天我也遇到这个问题了,我比你幸运,自己的主机,可以:
SET GLOBAL time_zone = '+8:00'; 
呵呵,你可惜了,不能用 UNIX_TIMESTAMP() 这样的函数了.

SET GLOBAL time_zone = '+8:00';  

 代码如下

3,一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
= 后面加XXX,重启http服务(如apache2或iis等)即可

您可能感兴趣的文章:

  • MySQL修改时区的方法小结
  • 详解MySQL查询时区分字符串中字母大小写的方法
  • mysql时区问题
  • mysql中url时区的陷阱该如何规避详解

其中 '+8:00' 是东八区的表示方法,其他的市区依次类推。而我在数据库模型中插入改语句发现权限不够该死的虚拟主机提供商)。接下来我调试了很多语句,比如:

date.timezone = "Asia/Shanghai"

关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)

DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR); 

设置好后,最好重启下系统。

港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)

显示时区的 SQL 语句:北京租车网 北京搬家公司

如果是购买的Web空间,没有权限在Linux PHP MySQL中配置时区。那也好办,只需要在PHP脚本中设置和OS对应的时区,因为MySQL中默认使用的是OS的时区。假设OS的时区是'Asia/Shanghai',使用下面两条语句其中之一即可:

还有新加坡:Asia/Singapore

SHOW VARIABLES LIKE 'system_time_zone' 

 代码如下

老外好像把北京漏调了

等等。而由于 MySQL 权限的限制并没有彻底的解决方案。我 Google 了下,发现老外这个有一个非常好的解决方案。但是他需要修改每条插入数据的 SQL 语句。这样的方案并不是非常的有效,一旦MySQL数据库时区改成正常,那么相应的 SQL 语句又要改回来。

 ini_set('date.timezone', 'Asia/Shanghai'); 

其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC

而我考虑既然 PHP 端已经可以正确的解决时间的问题了。MySQL 数据库方面虽然可以使用相应的函数解决,但是如果日后迁移到别的主机环境又要改回来。而相应的字段是一个 TIMESTAMP 类型的,默认的值为 CURRECT_TIMESTAMP,当然是可以指定时间的。

 date_default_timezone_set('Asia/Shanghai');

PRC是什么?PRC是中华人民共和国啊-_-

那么我的做法就是让 PHP 插入当前正确的时间,这样虽然程序方面需要做相应的修改。不过日后配置修改起来只要修改一处就可以了。最后插入数据库的时间注意一下格式:

二,windows中我们要在PHP.INI中设置时区

———————————————————————————————————————

date('Y-m-d H:i:s')这样就可以解决问题了。  

 代码如下

解决方式: 在页头使用date_default_timezone_set()设置我的默认时区为北京时间 date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s'); 时间和服务器当前时间一样了!!祝贺之 附date_default_timezone_set用法如下

Blog 的时候,时间总是出...

date.timezone = PRC

——————————–

在代码中设置时区

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 级别的错误信息。

 代码如下

以上所述上就是本文的全部内容了,希望大家能够喜欢。

 
1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai'   亚洲/上海

您可能感兴趣的文章:

  • 有关 PHP 和 MySQL 时区的一点总结
  • PHP中设置时区方法小结
  • PHP中设置时区,记录日志文件的实现代码
  • PHP跨时区(UTC时间)应用解决方案
  • 深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
  • php时区转换转换函数
  • PHP中date与gmdate的区别及默认时区设置
  • javascript+php实现根据用户时区显示当地时间的方法
  • php输出全球各个时区列表的方法

2 date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆”

3 date_default_timezone_set('PRC');//其中PRC为“中华人民共和国”

4i ni_set('date.timezone','Etc/GMT-8');

5 ini_set('date.timezone','PRC');

6 ini_set('date.timezone','Asia/Shanghai');

7 ini_set('date.timezone','Asia/Chongqing');

 以上七种方法,任意一个都可以满足我们需求。

系统初始化时,加上

 代码如下

ini_set('date.timezone','Asia/Shanghai'); 

date_default_timezone_set("PRC"); 

就将解决时区相差8

版权声明:本文由澳门金莎娱乐发布于计算机网络,转载请注明出处:php时区设置方法总结,时区的一点总结