• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP时间处理要点

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

世界分为24个时区,GMT是零时区,也就是通常所说的格林尼治时间。中国位于东八区,比GMT时间多八个小时。例如,GMT现在是2011-06-27 09:45:32,我们的时间就是2011-06-27 01:45:32。

PHP的mktime()函数返回的是GMT时间,date()函数返回的是依据date.timezone或者date_default_timezone_set()函数设置的时区对应的时间。

PHP大陆内地可用的时区是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐),港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北),  还有新加坡:Asia/Singapore。

PHP将时间戳转换成字符串可以使用gmdate()函数:

$s = gmdate('Y-m-d H:i:s', 1308279886);

 

PHP处理时间通常的做法是在MySQL数据库中用整数保存时间戳,在前端处理时增减对应的时区差量。

MySQL可以使用FROM_UNIXITME()将时间戳转换成datetime的类型,此函数会受到时区的影响:

SET SESSION time_zone = '+0:00';
SELECT updatetime, FROM_UNIXTIME(updatetime) FROM tbs_articles;

上面SQL返回的是GMT时间,因为时区被设置成了零时区:

1308279886    2011-06-17 03:04:46
如果将执行SET SESSION time_zone = '+8:00',返回的结果是:
1308279886    2011-06-17 11:04:46

MySQL可以使用DATE_FORMAT函数格式化datetime类型:

SET SESSION time_zone = '+0:00';
SELECT updatetime, FROM_UNIXTIME(updatetime), DATE_FORMAT(FROM_UNIXTIME(updatetime), '%Y-%m-%d %H:%i:%s') FROM tbs_articles;
SELECT updatetime, FROM_UNIXTIME(updatetime), DATE_FORMAT(FROM_UNIXTIME(updatetime + 8 * 3600), '%Y-%m-%d %H:%i:%s') FROM tbs_articles;

 

参考:
1. 世界时区/时间http://app.travel.ifeng.com/tools/timezone-index-3.html
2. 世界时区图http://www.24-hotel.com.cn/w_hotel/world_time.asp
3. PHP所支持的时区列表http://php.net/manual/zh/timezones.php
4. MySQL日期和时间函数http://www.phpchina.com/resource/manual/mysql/functions.html#date-and-time-functions
5. PHP日期和格式http://cn.php.net/manual/zh/function.date.php


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
phpsocket通信(tcp/udp)发布时间:2022-07-10
下一篇:
解决php7无法加载curl、intl、ldap的问题发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap