PHP跨时区(UTC时间)应用解决方案
PHP跨时区(UTC时间)应用解决方案
发布时间:2016-12-29 来源:查字典编辑
摘要:1.将程序内部时区设置为UTC时间.(UTC也可以叫GMT)PHP设置:date_default_timezone_set("UTC");Y...

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教程学习
热门php教程学习
编程开发子分类