• 技术文章 >后端开发 >php教程

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

    2016-05-16 20:21:33原创461
    本文实例讲述了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程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP获取ip对应地区和使用网络类型的方法_php技巧 下一篇:PHP读取txt文本文件并分页显示的方法_php技巧
    Web大前端开发直播班

    相关文章推荐

    • PHP程序61条面向对象分析设计的经验小结_PHP• 用PHP来写记数器(详细介绍)_PHP• 使用PHP批量生成随机用户名_PHP• 让你的PHP引擎全速运转_PHP• Php利用java解析xml_PHP

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网