时区与Cookie设置

发布:2013-08-20 10:00   点击400次   评论:0

时区与Cookie设置
http://blog.csdn.net/xxzqyall/article/details/6197228
根据用户时区显示当地时间 php+javascript

// javascript
window.Onload = function() {  
//TODO begin 处理登陆用户时区  
        //获得登陆用户时区与GMT时区的差值 赵奇英 2011-2-20  
        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;  
}  


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

关于 GitHub 导航 部门 反馈

提示:`/home.php`入口数据仅为演示功能,不构成任何交易凭证,也不承担相关风险和责任!

Copyright © 2011-2018 xxxxx.com All rights reserved.

Run:2.715/31.035(ms); 7(sql)/2.89(MB); comm:news/detail; Upd:2025-01-11 11:06:58