都可以获得一个对应的时区文字显示
关于PHP中时间函数的使用就参考:PHP时间函数使用详解。这里我们先了解一下PHP中时区的设置要领。PHP中进行设置的要领对照灵活多样,可以在php.ini中设置date.timezone属性、可以通过代码,挪用ini_set(‘date.timezone‘, ‘‘)设置,也可以使用函数 date_default_timezone_set(),或者在htaccess文件中设置。
处事器的默认时区,如果设置的和我们但愿的时区不符,而且我们也没有权限改削全局的时区配置,就只有借助于代码了。
PHP还供给了一个便利的函数,gmdate(),,可以让我们不用关心处事器的时区设置而始终获得GMT时间,我的思路就是基于这个函数。
我的项目中使用了Codeigniter这个框架,框架中的date这个helper供给了几个便利的函数,可以用来措置惩罚惩罚应用中的多时区情况。
此中 now() 始终返回的是gmt确当前时间;local_to_gmt() 可以将本地的时间转换为gmt时间;gmt_to_local() 可以将gmt时间转换为本地时间;
考虑一个范例的应用场景:
用户登陆后,要显示当前时间。这是我们可以使用now()获得标准的gmt时间,然后使用gmt_to_local()函数转化为用户地址时区的时间。
用户要颁布一个时间。用户颁布了一个“2010-07-10 18:30:00”的时间,我们不能直接存入数据库,必需先操作local_to_gmt() 转化标准的gmt时间存入数据库,这样才华保证整个系统中的时间连结一致。
这两个函数的细节,其实都是按照时区,然后进行相应的运算得来。计算的时候,也可以考虑夏令时,但是地址时区夏令时的开始和结束时间,则需要本身维护。
codeigniter中供给了一份较为完整的时区列表,timezone_menu() 可以显示一个时区的下拉列表,但是这个列表中的时间不能完全对应到PHP自带的时区显示上,这是PHP自己的问题,不过可以通过下面这个函数,来让输入的每个时区,都可以获得一个对应的时区文字显示。
if( ! function_exists("tz_offset_to_name") ) { /* Takes a GMT offset (in hours) and returns a timezone name */ function tz_offset_to_name($offset) { $offset *= 3600; // convert hour offset to seconds $abbrarray = timezone_abbreviations_list(); foreach ($abbrarray as $abbr) { foreach ($abbr as $city) { if ($city[‘offset‘] == $offset) { return $city[‘timezone_id‘]; } } } return FALSE; } }
总结
以上就是这篇文章的全部内容了,但愿本文的内容对大家的学习或者事情具有必然的参考学习价值,感谢大家对敏而好学论坛/嗨学网的撑持。如果你想了解更多相关内容请检察下面相关链接
原文地点是:
PHP应用跨时区成果的实现要领_php技巧 - PHP
标签:
原文地点:https://www.cnblogs.com/txdah/p/12093310.html
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33133.html