前言:
此时兄弟们对“php时间配置”都比较着重,看官们都需要了解一些“php时间配置”的相关文章。那么小编在网摘上收集了一些有关“php时间配置””的相关知识,希望各位老铁们能喜欢,朋友们快快来学习一下吧!无论是在生活中,还是程序中,时间都是一个重要的东西,在程序中时间可以让我们在整个流程的上下文起到梳理的作用。 而且在实际项目实践中,经常因为时区设置不当题,导致在显示时间或存储时间时出现一些低端问题,所以今天我们来一起谈一谈PHP的时区问题。
时区的划分
目前,国际上对全球的时区划分范围分为 24 个时区。每个时区都有自己的本地时间,同一时间内各时区的本地时间相差 1~23 小时,如英国伦敦本地时间(此地区GMT)与北京本地时间相差 8 个小时。
谈到时区,就不得不谈到两个时间,一个GMT, 另一个UTC。
GMT: 格林威治标准时间(Greenwich Mean Time,GMT), 这个时间原来是用来表示标准参照时间,现在被UTC取代。可以将它理解成一个地区的当地时间
UTC: 国际上新实行的标准参照时间(Universal Time Coordinated,UTC), 这个时间是作为一个标准时间,可以换算成其他时区(地区)的时间. 例如 GMT = UTC + 0( 由于GMT 所在时区为0) ,
PHP时区设置
理解完上述所述的概念之后,我们来看看在php中如何进行时区的设置。在设置之前我们先来了解一下php对不同时区划分标识,具体的参照标识符号在官方文档:
配置文件中设置
PHP 的配置文件在安装目录下的 php.ini 文件,如果是Linux,一般会在安装目录下的etc目录中。在文件php.ini中找到date.timezone配置项,具体信息如下:
[Date]; Defines the default timezone used by the date functions; ;date.timezone =
其中date.timezone 注释之后,在php中使用的话,默认是GMT,这里我们可以设置为PRC(中国时区), 或者设置为Asia/Shanghai,这只是一个时区标识符,用于标识当前php应该根据那个地区来进行处理时间。
不过,这种方法不建议使用,因为在生产实际项目中,一般代码部署了多台机器。如果需要更改配置,需要运维同事登录到不同的机器上去进行修改重启,这个过程中由于配置过程繁琐,容易导致手误出错。所以在这种情况下不建议用在实际项目。毕竟一旦出现服务宕机,对公司带来的是业务损失。
使用 ini_set() 函数设置时区
PHP 中的 ini_set($env, $value) 函数可用于在代码中设置具体的配置项值。其中 $env 为待修改的配置项,$value 表示配置项的值。不过此函数有一定的使用限制,并不是所有的配置项都可以用此函数进行设置。具体文档可以到官方地址中查看:
使用示例如下:
<?php ini_set('date.timezone', 'GMT'); echo 'current timezone: ', ini_get('date.timezone'), PHP_EOL;ini_set('date.timezone', 'Asia/Shanghai');echo 'current timezone: ', ini_get('date.timezone'), PHP_EOL;使用 date_default_timezone_set()
PHP 中的 date_default_timezone_set($timezone_identifie) , 参数 $timezone_identifier 为时区标识符,例如 UTC(格林尼治时间)或 Asia/Shanghai(上海)函数可以设置当前生命周期中请求的默认时区。
此方法在许多框架中都是使用此函数来进行时区的设置。比较常规的一个做法是,独立一个配置项在php中,每当一次请求,在代码中加载的配置阶段根据配置进行时区的设置。独立的配置项可以独立在自己的php配置文件中。或存储在数据库中。
使用示例如下:
<?php date_default_timezone_set('GMT'); echo 'UTC current date:', date('Y-m-d H:i:s', time()) , PHP_EOL; date_default_timezone_set('Asia/Shanghai'); echo 'shanghai current time:', date('Y-m-d H:i:s', time()), PHP_EOL;
注意: 在php中time()函数返回的是时间戳, 它返回的是1970-01-01 00:00:00(GMT)到现在时间的间隔秒数
标签: #php时间配置