PHP跨时区(UTC时间)应用解决方案


Posted in PHP onJanuary 11, 2013

1.将程序内部时区设置为UTC时间.(UTC 也可以叫 GMT)
PHP设置:
date_default_timezone_set("UTC");
Yii设置:
config/main.php 中添加 :'timeZone'=>'UTC',
如此设置后,PHP生成的时间基本都是UTC时间了.例如:
//输出当前UTC时间
date("Y-m-d H:i:s");

2.数据库中存储UTC时间.
可以用PHP控制,也可以通过设置数据库时区来实现.

3.服务端发送到前端的时间均为UTC时间格式, 由JS将其转换为本地时间后进行显示.JS内部数据与显示数据分离.
JS转换函数参考:

/** 
* 将UTC时间转为本地时间 
* @param string utcTime utc时间字符串 格式 :'Y-m-d H:i:s' 
* @return string 本地时间字符串 格式 :'Y-m-d H:i:s' 
*/ 
function utcToLocal(utcTime) { 
if(utcTime==='0000-00-00 00:00:00' || utcTime===null || utcTime==='' || utcTime===undefined) 
return utcTime; 
var locTime = new Date(); //local时间对象 
utcTime=utcTime.replace("-", "/").replace("-", "/"); //火狐不兼容'-'分隔日期 
//解析字符串及本地时间赋值 
locTime.setTime(Date.parse(utcTime)-locTime.getTimezoneOffset()*60000); 
//本地时间字符串格式化 
var year = locTime.getFullYear(); 
var month = preZero(locTime.getMonth()+1); 
var date = preZero(locTime.getDate()); 
var hour = preZero(locTime.getHours()); 
var minute = preZero(locTime.getMinutes()); 
var second = preZero(locTime.getSeconds()); 
return year+'-'+month+'-'+date+' '+hour+':'+minute+':'+second; 
} 
/** 
* 将本地时间转为UTC时间 
* @param string locTime utc时间字符串 格式 :'Y-m-d H:i:s' 
* @return string 本地时间字符串 格式 :'Y-m-d H:i:s' 
*/ 
function localToUtc(locTime) { 
if(locTime==='0000-00-00 00:00:00' || locTime==='0000-00-00' || locTime===null || locTime==='' || locTime===undefined) 
return locTime; 
var tmpTime = new Date(); 
var utcTime = new Date(); 
locTime=locTime.replace("-", "/").replace("-", "/"); //火狐不兼容'-'分隔日期 
//解析字符串 
tmpTime.setTime(Date.parse(locTime)); 
if(locTime.length>10) { 
var year = tmpTime.getUTCFullYear(); 
var month = preZero(tmpTime.getUTCMonth()+1); 
var date = preZero(tmpTime.getUTCDate()); 
var hour = preZero(tmpTime.getUTCHours()); 
var minute = preZero(tmpTime.getUTCMinutes()); 
var second = preZero(tmpTime.getUTCSeconds()); 
return year+'-'+month+'-'+date +' '+hour+':'+minute+':'+second; 
} else { 
//设置日期,保留本地时间(供UTC转换用) 
utcTime.setFullYear(tmpTime.getFullYear()); 
utcTime.setMonth(tmpTime.getMonth());utcTime.setMonth(tmpTime.getMonth());//?若不重复,则赋值无效 
utcTime.setDate(tmpTime.getDate()); 
var year = utcTime.getUTCFullYear(); 
var month = preZero(utcTime.getUTCMonth()+1); 
var date = preZero(utcTime.getUTCDate()); 
return year+'-'+month+'-'+date; 
} 
} 
//单个数字添加前导0 
function preZero(str) { 
return str.toString().length<2 ? '0'+str : str; 
}
PHP 相关文章推荐
smarty实例教程
Nov 19 PHP
php创建多级目录代码
Jun 05 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 PHP
PHP编程函数安全篇
Jan 08 #PHP
php中定时计划任务的实现原理
Jan 08 #PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 #PHP
PHP中设置时区,记录日志文件的实现代码
Jan 07 #PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 #PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 #PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 #PHP
You might like
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
很好用的PHP数据库类
2009/05/27 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
Python中关于使用模块的基础知识
2015/05/24 Python
python制作最美应用的爬虫
2015/10/28 Python
python中学习K-Means和图片压缩
2017/11/20 Python
Python之文字转图片方法
2018/05/10 Python
使用Python如何测试InnoDB与MyISAM的读写性能
2018/09/18 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
shell程序中如何注释
2012/02/17 面试题
职工趣味运动会方案
2014/02/10 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
夫妻吵架保证书
2015/05/08 职场文书
二十年同学聚会感言
2015/07/30 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
党员理论学习心得体会
2016/01/21 职场文书
会计入职心得体会
2016/01/22 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
排查Tomcat进程假死的问题
2022/05/06 Servers