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程序设计有所帮助。