• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > php编程 >

有关国外空间 VPS PHP时间不正确解决办法

来源: www.dedecms8.com 编辑:织梦吧 时间:2011-02-01点击:

      由于暂时使用国外的空间,在我发布 Blog 的时候发现时间总是不对。依据我以前编写程序的经验,这是时区的问题。这个问题解决起来并不难,写下我的解决途径以便日后参考。

  PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为 'Asia/Shanghai' 即可。但是通常共享虚拟主机本身没有修改 php.ini 权限。这个时候就应该在程序公共部分加入
  ini_set('date.timezone','Asia/Shanghai');
  动态修改 php.ini 的设置。之后可以测试一下时间是否正确:
  var_dump(date());
  如果服务器的本地时间是正确的,那么一般就能解决问题了。附,PHP 5.1 以上提供了专门的函数修改对应的时区:
  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;老外好像把北京漏调了。
  但是,在我修改成功 PHP 端的时区以后发现日期并没有正确的记录下来。这个时候我考虑是否是数据库的问题。果不其然,因为程序插入的函数并没有调用 PHP 的时间,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。这个时候就要考虑是否能修改 MySQL 方面的时区。
  参考了 MySQL 的文档,发现一个可行的 SQL 语句为:
  SET GLOBAL time_zone = '+8:00';
  其中 '+8:00' 是东八区的表示方法,其他的市区依次类推。而我在数据库模型中插入改语句发现权限不够(该死的虚拟主机提供商)。接下来我调试了很多语句,比如:
  DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR);
  显示时区的 SQL 语句:

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ