php中用date函数获取当前时间有误的解决办法

yipeiwu_com5年前PHP代码库

初学PHP做网站,想在页面上获得当前时间,学过编程的人都知道用时间函数date(),先用这个函数格式化一个本地时间/日期,先写个测试代码吧,结果输出时间比实际时间少了8小时,这是什么原因呢:

复制代码 代码如下:

<?php
    echo date('Y-m-d H:i:s');
?〉

输出当前时间:2008-10-12 02:32:17
怪了,实际时间是:2008-10-12 10:32:17

难道是PHP的date()时间不正确 少8个小时?
再看看PHP手册的“例子 1. date() 例子”第一行多了一个 时区设置
// 设定要用的默认时区。自 PHP 5.1 可用
date_default_timezone_set('UTC');

原来php5.1.开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和北京时间正好差8个小时。

如何设置可以得到正确的PHP时间?

1、修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服务器即可--缺点就是如果程序
放到别人的服务器上,不能修改php.ini,那就奈何不得了。

2、在程序中添加时间的初始化的语句的 即:“date_default_timezone_set("Asia/Shanghai"); ”这个可以由程序员任意设置,我的推荐。
时区标识符,大陆内地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为中国,重庆,上海,乌鲁木齐) ,Etc/GMT-8,Asia/Harbin

港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)还有新加坡:Asia/Singapore
这样就可以实现输出的是北京时间了。

更详细的时区代码 时区编码 时区索引码 timezone_identifier 大家可以在官方网站中查到。

相关文章

php为字符串前后添加指定数量字符的方法

本文实例讲述了php为字符串前后添加指定数量字符的方法。分享给大家供大家参考。具体分析如下: 这段php代码定义了两个函数 str_prefix和str_suffix,分别用来给字符串前...

PHP中使用数组实现堆栈数据结构的代码

在堆栈中,最后压入的数据(进栈),将会被最先弹出(出栈)。 即在数据存储时采用“先进后出”的数据结构。 PHP中,将数组当做一个栈,主要是使用array_push()和array_pop...

PHP实现的策略模式示例

本文实例讲述了PHP实现的策略模式。分享给大家供大家参考,具体如下: 个人觉得设计模式只有在实际应用中才能够慢慢的去熟悉,到最后做到心中有模式,事事有模式,哈哈 例如:一个电商首页,...

验证坐标在某坐标区域内php代码

验证坐标在某坐标区域内php代码

之前碰到的这样一个需求,要将公司的服务在地图中显示出来,并将用户每天的访问坐标进行统计看有多少用户是在所能达到的服务范围半径内。 以下是PHP代码的实现 (仅验证坐标在某片坐标区域内)...

PHP中explode函数和split函数的区别小结

一、前言 之所以做这个,是因为这两个函数的作用很像,都是把字符串转换成数组。 二、explode 从下面的例子可以看出,生成的数组是有对应的顺序的。 $pizza = "piece1...