getdate()等时间函数的时区问题
2017-12-01 00:00
176 查看
参考地址:http://www.ggat.cn/newsInfo.html/126
同样的一段程序,在自己的机器上调试完全没有问题,放到服务器上时间显示就快了8个小时。显然这8个小时就差在时区设置上。我在自己的机器上写代码时,对timestamp进行了时区调整($now += 8 * 3600)之后再进行getdate()转换,结果完全正确;放到服务器上执行,就要将时区调整代码去掉之后才正常。一时百思不得其解。
写了个小测试程序:先用 time() 取得当前时间戳,再用 getdate() 获取当前的小时、分、秒,分别放到开发环境和服务器上执行。结果很显然,服务器上显示的时间是正确的(22点显示为22点),而我的机器的时间是错误的(22点显示为14点)。从时区的角度来看,服务器使用了正确的CST时区(中国时区),而我的开发环境的时区则是UTC的。但开发环境操作系统是Windows,时区设置也正确,为什么会出错?
后来通过date_default_timezone_set()函数可以设置默认时区名。天啊,居然有这样的函数,查了查资料发现它的反义函数date_default_timezone_get(),将这个函数分别在开发环境和服务器上执行,果然,我的时区设置为 UTC。
知道了原因就好修改了。打开开发环境中的 php.ini,找到 date.timezone,去掉注释并将其设置为 PRC,再运行,这次结果正确了。
同样的一段程序,在自己的机器上调试完全没有问题,放到服务器上时间显示就快了8个小时。显然这8个小时就差在时区设置上。我在自己的机器上写代码时,对timestamp进行了时区调整($now += 8 * 3600)之后再进行getdate()转换,结果完全正确;放到服务器上执行,就要将时区调整代码去掉之后才正常。一时百思不得其解。
写了个小测试程序:先用 time() 取得当前时间戳,再用 getdate() 获取当前的小时、分、秒,分别放到开发环境和服务器上执行。结果很显然,服务器上显示的时间是正确的(22点显示为22点),而我的机器的时间是错误的(22点显示为14点)。从时区的角度来看,服务器使用了正确的CST时区(中国时区),而我的开发环境的时区则是UTC的。但开发环境操作系统是Windows,时区设置也正确,为什么会出错?
后来通过date_default_timezone_set()函数可以设置默认时区名。天啊,居然有这样的函数,查了查资料发现它的反义函数date_default_timezone_get(),将这个函数分别在开发环境和服务器上执行,果然,我的时区设置为 UTC。
知道了原因就好修改了。打开开发环境中的 php.ini,找到 date.timezone,去掉注释并将其设置为 PRC,再运行,这次结果正确了。
相关文章推荐
- 关于php的时间相关函数需要注意时区问题
- php时间函数的一些例子以及时区设置问题
- 数据库获取时间的时区问题以及getTimestamp和getDate的坑
- PHP获取当前时间戳,当前时间、及解决时区问题
- Tomcat7.x时区问题导致时间获取不正确
- NSDateFormatter转换时间字符串时的时区问题
- 时间戳函数如何避免效率问题
- Django---时间的时区问题
- Tomcat中因时区设置问题导致与系统时间不一致问题
- HignCharts时间显示天大的巨坑 时区问题
- lua 获取时间的 os.date时区问题 需要注意的
- sql函数使用 GETDATE() 函数来获得当前的日期/时间
- 关于ThinkPHP5.0*的软删除delete_time的引用和部分时间函数where(),whereTime()连贯操作的问题
- [Ios] DatePicker获取时间时,如何转换时区的问题
- 【初学者】php时间函数问题
- js的getdate函数格式问题
- django时间的时区问题
- spring boot 架构问题 时间处理 (映射,时区问题)
- php5中的时区修改的问题,用函数解决。
- DatePicker获取时间时,如何转换时区的问题