php教程

超轻量级php框架startmvc

javascript+php实现根据用户时区显示当地时间的方法

更新时间:2020-03-03 05:10:09 作者:startmvc
本文实例讲述了javascript+php实现根据用户时区显示当地时间的方法。分享给大家供大家参考

本文实例讲述了javascript+php实现根据用户时区显示当地时间的方法。分享给大家供大家参考。具体如下:

在跨时区应用中会用到下面代码,这是以前写的一段代码。

服务器保存相关时间配置,保存形式为GMT时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯。

1. JavaScript代码如下:


window.onload = function() {
//TODO begin 处理登陆用户时区
 //获得登陆用户时区与GMT时区的差值
 var exp = new Date();
 var gmtHours = -(exp.getTimezoneOffset()/60);
 setCookie('customer_timezone',gmtHours,1);
 //判断是否为夏令时
 date = exp.format('yyyy-MM-dd HH:mm:ss');
 if(inDaylightTime(date)){
 setCookie('inDaylightTime',1,1);
 }
}
//设置Cookie
function setCookie(c_name,value,expiredays){
 var exdate=new Date()
 exdate.setDate(exdate.getDate()+expiredays)
 document.cookie=c_name+ "=" +escape(value)+
 ((expiredays==null) ? "" : "; expires="+exdate.toGMTString())
}
//判断时间是东半球还是西半球
function isEastEarthTime(newDate)
{
 var dj= newDate.getGMTOffset(false);
 if (dj.indexOf("-") == -1){
 return true;
 } else {
 return false;
 }
}
//是否是夏令时
function inDaylightTime(date){
 var start = new Date(date.getTime());
 start.setMonth(0);
 start.setDate(1);
 start.setHours(0);
 start.setMinutes(0);
 start.setSeconds(0);
 var middle = new Date(start.getTime());
 middle.setMonth(6);
 // 如果年始和年中时差相同,则认为此国家没有夏令时
 if ((middle.getTimezoneOffset() - start.getTimezoneOffset()) == 0) 
 {
 return false;
 }
 var margin = 0;
 if (this.isEastEarthTime(date)) {
 margin = middle.getTimezoneOffset();
 } else {
 margin = start.getTimezoneOffset();
 }
 if (date.getTimezoneOffset() == margin) {
 return true;
 }
 return false;
}
//DONE end

2. 服务器端php代码:


//24小时内 GMT到本地时间的转换
function gmt_to_local($time = '', $dst = FALSE){
 //JavaScript设置Cookie,PHP取值
 if (isset($_COOKIE["customer_timezone"])){
 $timezone = $_COOKIE["customer_timezone"];
 }else{
 $timezone = 0;
 }
 if ($time == ''){
 return now();
 }
 //时间处理
 $time += $timezone * 3600;
 
 //是否为夏令时
 if(isset($_COOKIE["inDaylightTime"]) && $_COOKIE["inDaylightTime"]==1)
 {
 $dst = TRUE;
 }
 if ($dst == TRUE){
 $time += 3600;
 }
 return date("H:i",$time);
}

希望本文所述对大家的php程序设计有所帮助。