javascript+php实现根据用户时区显示当地时间的方法
本文实例讲述了javascript+php实现根据用户时区显示当地时间的方法。分享给大家供大家参考。具体如下:
在跨时区应用中会用到下面代码,这是以前写的一段代码。
服务器保存相关时间配置,保存形式为GMT时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯。
1.JavaScript代码如下:
window.onload=function(){ //TODObegin处理登陆用户时区 //获得登陆用户时区与GMT时区的差值 varexp=newDate(); vargmtHours=-(exp.getTimezoneOffset()/60); setCookie('customer_timezone',gmtHours,1); //判断是否为夏令时 date=exp.format('yyyy-MM-ddHH:mm:ss'); if(inDaylightTime(date)){ setCookie('inDaylightTime',1,1); } } //设置Cookie functionsetCookie(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; } //DONEend
2.服务器端php代码:
//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); }
希望本文所述对大家的php程序设计有所帮助。