人狠话不多,直接上代码:
// util.js页面,封装的公共方法 /** * 仿微信时间处理 * time:时间格式\'2020-01-15\'或\'2020/01/15\'或\'2020-01-15 15:00\'或\'2020/01/15 15:00\' * yStr:日期拼接格式,默认\'/\'拼接 * isHours:是否显示时分,默认不显示 */ function updateTimeShow(time, yStr = "/", isHours = false) { time = time.replace(/-/g, \'/\'); //苹果真机不支持-连接得日期,所以要转成/链接得日期 const JUST_NOW = 3000; //3s内 const IN_SECOND = 1000 * 60; //一分钟 const IN_MINUTE = 1000 * 60 * 60; //一小时 const IN_HOUR = 1000 * 60 * 60 * 12; //12小时 const IN_DAY = 1000 * 60 * 60 * 24 * 1; //24小时 const IN_MONTH = 1000 * 60 * 60 * 24 * 30; //1个月 const IN_YEAR = 1000 * 60 * 60 * 24 * 30 * 12;//1年 var realtime = \'\', //最终返回的时间 localTime = new Date(), //当前系统时间,世界标准时间 localDay = (localTime.getDate() < 10) ? (\'0\' + localTime.getDate()) : localTime.getDate(), //当天系统天数,就是几号 localMsec = new Date().getTime(), //当前系统时间,毫秒数 createTime = new Date(time), //传入的时间,世界标准时间 createMsec = new Date(time).getTime(), //消息创建时间,毫秒数 diff = localMsec - createMsec, //计算出来得时间戳 list = new Date(time).toString().split(" "), //将后台返回得时间分割,用于取年月日时分 year = list[3], //年 month = getNumberMonth(list[1]), //月 day = list[2], //日 hhmmss = list[4].split(\':\'), //[时:分:秒] hourSec = hhmmss[0] + \':\' + hhmmss[1]; //时分 if (diff <= IN_SECOND) { //小于1分钟,显示刚刚 return \'刚刚\'; } else if (diff <= IN_MINUTE && diff > IN_SECOND) { //小于1小时,显示几分钟前 return parseInt(diff / IN_SECOND) + \'分钟前\'; } else if ((diff <= IN_DAY) && (localDay == day)) { //当天小于1天,显示时分 return realtime = hourSec; } else if ((diff <= IN_DAY) && (localDay - day == 1)) { //昨天当天24小时内,显示月日 return realtime = month + yStr + day; } else if ((diff > IN_DAY && diff <= IN_DAY * 2) && (localDay - day <= 1)) { //大于1天&小于2天,显示昨天 return \'昨天 \' + hour + \':\' + second; } else if ((diff < IN_DAY * 7) && isSameWeek(time)) { //本周时间内小于7天,显示周几+时间 const t = createTime.toString().slice(0, 3); switch (t) { case "Mon": return \'周一 \' + hourSec; case "Tue": return \'周二 \' + hourSec; case "Wed": return \'周三 \' + hourSec; case "Thu": return \'周四 \' + hourSec; case "Fri": return \'周五 \' + hourSec; case "Sat": return \'周六 \' + hourSec; case "Sun": return \'周日 \' + hourSec; } } else if (diff < IN_YEAR) { //小于1年,显示月日 if (isHours) { //显示时分 realtime = month + yStr + day + \' \' + hourSec; } else { //不显示时分 realtime = month + yStr + day; } return realtime; } else if (diff > IN_YEAR) { //大于一年,显示年月日 return realtime = year + yStr + month + yStr + day; } } /** * 月份转化 */ function getNumberMonth(month) { switch (month) { case "Jan": return "01"; case "Feb": return "02"; case "Mar": return "03"; case "Apr": return "04"; case "May": return "05"; case "Jun": return "06"; case "Jul": return "07"; case "Aug": return "08"; case "Sep": return "09"; case "Oct": return "10"; case "Nov": return "11"; case "Dec": return "12"; } } /** * 判断两个日期是否为同一周 * 因为1970年1月1 是周4 所以(天数+4)/7 取整 就是周数 如果相同就是同一周反之就不是 经过测试,是以星期一作为每周的第一天的 */ function isSameWeek(now) { var oneDayTime = 1000 * 60 * 60 * 24; var old_count = parseInt(new Date().getTime() / oneDayTime); var now_other = parseInt(new Date(now).getTime() / oneDayTime); // console.log(\'old周\', old_count, \'now周\', now_other) return parseInt((old_count + 4) / 7) == parseInt((now_other + 4) / 7); } // 这个属性是将方法名暴露出来,否则需要引用的页面取不到 module.exports = { updateTimeShow, }
1 // pages/index/index.js 2 const util = require(\'../../utils/util.js\'); 3 Page({ 4 5 data: { 6 time: \'\', //处理后的日期 7 }, 8 9 /** 10 * 生命周期函数--监听页面加载 11 */ 12 onLoad: function (options) { 13 this.setData({ 14 time: \'转换后的日期::\' + util.updateTimeShow(\'2020-01-15 14:00\') 15 }) 16 }, 17 18 })
请发表评论