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

5年以前  |  阅读数:226 次  |  编程语言: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程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例