JavaScript计算消息推送时间差

来源:互联网 发布:广电网络业绩 编辑:程序博客网 时间:2024/06/07 05:26

消息推送需要显示消息时间和当前时间的差值,显示消息的相对时间状态,比如:“刚刚”这种。

真实项目当中,应当获取服务器返回时间,保证信息和服务器的时间保持一致。本次为个人兴趣玩玩。

因为safari里面对于日期格式“-”不支持,只能解析“/”,所以加入了正则匹配兼容。

function getTime(time) {var $currentDate = new Date(),                $createdDate = new Date(time.replace(/-/g, "/")); /*兼容safari的时间判断bug*/                newTime = $currentDate.getTime();                oldTime = $createdDate.getTime();                currentYears = $currentDate.getFullYear();                intervalTime = getInterval(newTime - oldTime, $createdDate, currentYears); /* 获取时间差 */                return intervalTime;        }

function getInterval(intervalTime, $oldDate,currentYears){                var $interval;                var days,years,months,hours,minutes,seconds,leave1,leave2,leave2;                /*计算出相差天数*/                days=Math.floor(intervalTime/(24*3600*1000))                /*计算出小时数*/                leave1=intervalTime%(24*3600*1000)    /*计算天数后剩余的毫秒数*/                hours=Math.floor(leave1/(3600*1000))                //计算相差分钟数                leave2=leave1%(3600*1000)      /*计算小时数后剩余的毫秒数*/                minutes=Math.floor(leave2/(60*1000))                //计算相差秒数                leave3=leave2%(60*1000)      /*计算分钟数后剩余的毫秒数*/                seconds=Math.round(leave3/1000)                if(days === 0){                    if (hours === 0) {                        if (minutes === 0) {                            $interval = '刚刚';                        } else {                            $interval = minutes + '分钟前';                        }                    } else {                        $interval = hours + '小时前';                    }                } else {                    if (days >3) {                        years = $oldDate.getFullYear();                        months = $oldDate.getMonth()+1; /* 月份从0月开始 */                        days = $oldDate.getDate()                        if (years === currentYears) {                            $interval = months + '月' + days +'日';                        } else {                            $interval = years +'年' + months + '月' + days +'日';                        }                    } else {                        $interval = days + '天前';                    }                }                return $interval;            }


over


原创粉丝点击