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

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

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服

发表评论

登录后才能评论