javascript+php实现根据用户时区显示当地时间的方法
2017-06-16 08:24 linkxu 阅读(958) 评论(0) 收藏 举报本文实例讲述了javascript+php实现根据用户时区显示当地时间的方法。分享给大家供大家参考。具体如下:
在跨时区应用中会用到下面代码,这是以前写的一段代码。
服务器保存相关时间配置,保存形式为GMT时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯。
1. JavaScript代码如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | window.onload = function() {//TODO begin 处理登陆用户时区    //获得登陆用户时区与GMT时区的差值    varexp = newDate();    vargmtHours = -(exp.getTimezoneOffset()/60);    setCookie('customer_timezone',gmtHours,1);    //判断是否为夏令时    date = exp.format('yyyy-MM-dd HH:mm:ss');    if(inDaylightTime(date)){      setCookie('inDaylightTime',1,1);    }}//设置CookiefunctionsetCookie(c_name,value,expiredays){    varexdate=newDate()    exdate.setDate(exdate.getDate()+expiredays)    document.cookie=c_name+ "="+escape(value)+    ((expiredays==null) ? "": "; expires="+exdate.toGMTString())}//判断时间是东半球还是西半球functionisEastEarthTime(newDate){  vardj= newDate.getGMTOffset(false);  if(dj.indexOf("-") == -1){    returntrue;  } else{    returnfalse;  }}//是否是夏令时functioninDaylightTime(date){ varstart = newDate(date.getTime()); start.setMonth(0); start.setDate(1); start.setHours(0); start.setMinutes(0); start.setSeconds(0); varmiddle = newDate(start.getTime()); middle.setMonth(6); // 如果年始和年中时差相同,则认为此国家没有夏令时 if((middle.getTimezoneOffset() - start.getTimezoneOffset()) == 0)  {   returnfalse; } varmargin = 0; if(this.isEastEarthTime(date)) {   margin = middle.getTimezoneOffset(); } else{   margin = start.getTimezoneOffset(); } if(date.getTimezoneOffset() == margin) {   returntrue; } returnfalse;}//DONE end | 
2. 服务器端php代码:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //24小时内 GMT到本地时间的转换functiongmt_to_local($time= '', $dst= FALSE){  //JavaScript设置Cookie,PHP取值  if(isset($_COOKIE["customer_timezone"])){    $timezone= $_COOKIE["customer_timezone"];  }else{    $timezone= 0;  }  if($time== ''){    returnnow();  }  //时间处理  $time+= $timezone* 3600;     //是否为夏令时  if(isset($_COOKIE["inDaylightTime"]) && $_COOKIE["inDaylightTime"]==1)  {    $dst= TRUE;  }  if($dst== TRUE){    $time+= 3600;  }  returndate("H:i",$time);} | 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号