doww38701 2014-07-14 21:45
浏览 49
已采纳

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

I'm trying to set a user's timezone offset for PHP, being sent over ajax. A page has been loaded with session data. If there is no data this gets put into the page:

<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>

without the visitortime.setMonth(1); it runs fine and returns the right offset. But with it, it returns only 0.

I want to be able to get timezone offset without DST and then run DST check on the PHP side.

  • 写回答

1条回答 默认 最新

  • donglu2761 2014-07-14 22:06
    关注

    I managed to fix it with this bit of code:

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

    Found here: Check if Daylight Saving Time is in effect, and if it is for how many hours.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能