美文网首页程序员工具箱
浏览器侧与后端时区不同时的时间比对处理函数

浏览器侧与后端时区不同时的时间比对处理函数

作者: 许一沐 | 来源:发表于2021-11-29 13:30 被阅读0次

    一开始是想用 spacetime 这个js库, 然后就因为一个提示就要引入接近40k的js文件,怎么想都觉得有些不合适. 所以自己实现了

    function pageTsVsServerTs(p_date, s_date_str) {
    
            var sTz = "<?php echo date_default_timezone_get()?>";
            var stz = "<?php echo date('O')?>";
            var stz_offset = <?php echo -1 * (date('Z') / 60)?>;
            var ptz_offset = (new Date).getTimezoneOffset(); // - 480
    
            // UTC as base time point
    
            var p_now = parseInt((p_date).getTime() / 1000);
            var p_now_utc = p_now - (ptz_offset * 60); // 网页侧基准原点
    
            var s_now = parseInt((new Date(s_date_str + ' GMT' + stz)).getTime() / 1000);
            var s_now_utc = s_now - (stz_offset * 60);
    
            return p_now_utc > s_now_utc;
            //console.log([p_now_utc, s_now_utc, p_now_utc > s_now_utc]);
        }
    

    上面想复杂了, 写了个错误的函数

    function pageTsVsServerTs(p_date, s_date_str) {
            var sTz = "<?php echo date_default_timezone_get()?>";
            var stz = "<?php echo date('O')?>";
            var stz_offset = <?php echo -1 * (date('Z') / 60)?>;
            var ptz_offset = (new Date).getTimezoneOffset();// - 480
    
            var interval_second = (stz_offset - ptz_offset) * 60;
            var s_ts = parseInt((new Date(s_date_str)).getTime() / 1000);
            var p_ts = parseInt((p_date).getTime() / 1000);
    
            return p_ts > (s_ts + interval_second);
        }
    

    相关文章

      网友评论

        本文标题:浏览器侧与后端时区不同时的时间比对处理函数

        本文链接:https://www.haomeiwen.com/subject/xvflxrtx.html