为什么我在php中用date()函数获取的时间老师与我电脑上显示的差8小时?

为什么我在php中用date()函数获取的时间老师与我电脑上显示的差8小时?,第1张

这是时区设置的问题

看看PHP手册的“例子 1 date() 例子”第一行多了一个 时区设置

// 设定要用的默认时区。自 PHP 51 可用

date_default_timezone_set(’UTC’);

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

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

1、修改phpini。打开phpini查找datetimezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服务器即可--缺点就是如果程序

放到别人的服务器上,不能修改phpini,那就奈何不得了。

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 大家可以在官方网站中查到

永久修改:更改phpini文件中的datatimezone = PRC  这是中国时间。重启Apache服务后生效。

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

从php510开始,phpini里加入了datetimezone这个选项,默认情况下是关闭的也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差了正好8个小时,有以下3中方法可以恢复正常的时间。

1最简单的方法就是不要用php51以上的版本;

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

1、首先在电脑上创建一个indexphp文件,编辑indexphp。

2、然后输入获取当天零点的时间戳,输入代码$today = strtotime(date("Y-m-d"),time());$time = strtotime($today);//获取到echo $time"<br />";//输出。

3、获取当天24点的时间戳$todayEnd = $today+606024;//家一天的时间echo $time = strtotime($todayEnd)"<br />";//输出。

4、获取前一天时间echo date("Y-m-d H:i:s",strtotime("-1 days"));。

5、以上即时间戳和前一天时间的获取。主要是对date()和strtotime()函数的灵活使用,就可以了。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12154232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存