zoukankan      html  css  js  c++  java
  • 根据用户时区显示当地时间 javascript+php

    在跨时区应用中会用到下面代码,这是以前写的一段代码。 

    服务器保存相关时间配置,保存形式为GMT时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯。 
    ​1. [代码][JavaScript]代码  http://www.huiyi8.com/ppt/​
    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;http://www.huiyi8.com/ppt/​
            }
            
            var margin = 0;
            if (this.isEastEarthTime(date)) {
                margin = middle.getTimezoneOffset();
            } else {ppt素材
                margin = start.getTimezoneOffset();
            }
            if (date.getTimezoneOffset() == margin) {
                return true;
            }
            return false;
    }
    //DONE end
     
    服务器端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);
    }

  • 相关阅读:
    Ⅲ:作业
    Ⅱ:python入门
    Auth模块
    django中间件
    Django的cookie以及session
    form组件
    Django Ajax
    Django模板层3和ajax初始
    聚合/分组 查询 事务
    Django ORM常用模块
  • 原文地址:https://www.cnblogs.com/xkzy/p/3865807.html
Copyright © 2011-2022 走看看