• 根据用户时区显示当地时间 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);
    }

  • 相关阅读:
    c语言 作用域、存储期、链接属性汇总
    进程上下文切换分析
    进程装载过程分析(execve系统调用分析)
    fork 创建进程的过程分析
    系统调用软中断处理程序system_call分析
    linux 系统调用分析
    8分钟带你深入浅出搞懂Nginx
    控制反转
    JAVA泛型(转)
    AOP(转)
  • 原文地址:https://www.cnblogs.com/xkzy/p/3865807.html
Copyright © 2020-2023  润新知