Javascript在没有DST的情况下打破时区

时间:2014-07-14 21:45:32

标签: javascript php jquery ajax

我试图为PHP设置用户的时区偏移量,通过ajax发送。页面已加载会话数据。如果没有数据,则会将其放入页面中:

<script type="text/javascript">
    $(document).ready(function() {
        var visitortime = new Date();
        visitortime.setMonth(1);
        var visitortimezone = visitortime.getTimezoneOffset()*60;
        $.ajax({
            url: "/ajax/timezone/set/"+ visitortimezone,
            success: function(){
               location.reload();
            }
        });
    });
</script>

没有visitortime.setMonth(1);它运行正常并返回正确的偏移量。但有了它,它只返回0。

我希望能够在没有DST的情况下获得时区偏移,然后在PHP端运行DST检查。

1 个答案:

答案 0 :(得分:1)

我设法用这段代码修复它:

Date.prototype.stdTimezoneOffset = function() {
    var jan = new Date(this.getFullYear(), 0, 1);
    var jul = new Date(this.getFullYear(), 6, 1);
    return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}

Date.prototype.dst = function() {
    return this.getTimezoneOffset() < this.stdTimezoneOffset();
}

$(document).ready(function() {
    var visitortime = new Date();
    var visitortimezone = visitortime.getTimezoneOffset()*60;

    if(visitortime.dst()){
        visitortimezone = visitortimezone + 60*60;
    }

    $.ajax({
        type: "GET",
        url: "/ajax/timezone/set/"+ visitortimezone,
        success: function(){
            location.reload();
        }
    });
});

在此处找到:Check if Daylight Saving Time is in effect, and if it is for how many hours