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);
    }

  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/xkzy/p/3865807.html
Copyright © 2011-2022 走看看