前端在日常工作中经常会遇到各种时间戳相关的处理。在此提供以下个人封装的方法,希望能够帮助大家节省时间
引入:
import SOtime from '@/utils/SOtime.js'使用:
console.log(SOtime.time1("<时间戳>")) // 刚刚 || 3分钟前 || 1小时前 || 1天前 || 1周前 || 2月前 || 2019年11月11日 console.log(SOtime.time2("<时间戳>")) // 上午12:01 || 昨天 || 星期日 || 2019-11-11 console.log(SOtime.time3("<时间戳>")) // 2019-11-11 12:01 console.log(SOtime.time4("<日期格式>")) // 1593790157203附源码:
// time1 1593790157203 TO>>> 刚刚 || 3分钟前 || 1小时前 || 1天前 || 1周前 || 2月前 || 2019年11月11日 // time2 1593790157203 TO>>> 上午12:01 || 昨天 || 星期日 || 2019-11-11 // time3 1593790157203 TO>>> 2019-11-11 12:01 // time4 2019/11/11 || 2019/11/11 12:03 TO>>> 1593790157203 const time1 = (timer) => { var arrTimestamp = (timer + '').split(''); for (var start = 0; start < 13; start++) { if (!arrTimestamp[start]) { arrTimestamp[start] = '0'; } } timer = arrTimestamp.join('') * 1; var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var halfamonth = day * 15; var month = day * 30; var now = new Date().getTime(); var diffValue = now - timer; // 如果本地时间反而小于变量时间 if (diffValue < 0) { return '不久前'; } // 计算差异时间的量级 var monthC = diffValue / month; var weekC = diffValue / (7 * day); var dayC = diffValue / day; var hourC = diffValue / hour; var minC = diffValue / minute; // 数值补0方法 var zero = function(value) { if (value < 10) { return '0' + value; } return value; }; // 使用 if (monthC > 12) { // 超过1年,直接显示年月日 return (function() { var date = new Date(timer); return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日'; })(); } else if (monthC >= 1) { return parseInt(monthC) + "月前"; } else if (weekC >= 1) { return parseInt(weekC) + "周前"; } else if (dayC >= 1) { return parseInt(dayC) + "天前"; } else if (hourC >= 1) { return parseInt(hourC) + "小时前"; } else if (minC >= 1) { return parseInt(minC) + "分钟前"; } return '刚刚'; } const time2 = (timer) => { var arrTimestamp = (timer + '').split(''); for (var start = 0; start < 13; start++) { if (!arrTimestamp[start]) { arrTimestamp[start] = '0'; } } var Etime = arrTimestamp.join('') * 1; //参数时间 var Etimer = new Date(Etime) var Ntime = new Date().getTime() //现在时间 var Ntimer = new Date() var Eyear = Etimer.getFullYear(); //取得4位数的年份 var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1; //取得日期中的月份,其中0表示1月,11表示12月 var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate(); //返回日期月份中的天数(1到31) var Eweek = Etimer.getDay() //返回日期月份中的周 var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours(); //返回日期中的小时数(0到23) var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes(); //返回日期中的分钟数(0到59) var today = new Date(new Date().setHours(0, 0, 0, 0)) / 1000 * 1000 //今天0点时间戳 var yesterday = today - 24 * 60 * 60 * 1000 //昨天0点时间戳 var beforeWeek = today - 7 * 24 * 60 * 60 * 1000 //一周前0点时间戳 // 今天的时间 if (today < Etime) { if (Ehour < 12) { return '上午' + Ehour + ':' + Eminute } else { return '下午' + Ehour + ':' + Eminute } } // 昨天的时间 if (yesterday < Etime < today) { return '昨天' } // 一周内的时间 if (beforeWeek < Etime) { if (Eweek == 0) { return "星期日" } else if (Eweek == 1) { return "星期一" } else if (Eweek == 2) { return "星期二" } else if (Eweek == 3) { return "星期三" } else if (Eweek == 4) { return "星期四" } else if (Eweek == 5) { return "星期五" } else if (Eweek == 6) { return "星期六" } } // 更早的时间 return Eyear + '-' + Emonth + '-' + Edate } const time3 = (timer) => { var arrTimestamp = (timer + '').split(''); for (var start = 0; start < 13; start++) { if (!arrTimestamp[start]) { arrTimestamp[start] = '0'; } } var Etime = arrTimestamp.join('') * 1; //参数时间 var Etimer = new Date(Etime) var Eyear = Etimer.getFullYear(); //取得4位数的年份 var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1; //取得日期中的月份,其中0表示1月,11表示12月 var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate(); //返回日期月份中的天数(1到31) var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours(); //返回日期中的小时数(0到23) var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes(); //返回日期中的分钟数(0到59) return Eyear + "-" + Emonth + "-" + Edate + " " + Ehour + ":" + Eminute } const time4 = (timer) => { var date = timer.replace(/\//g, '-') date = timer.replace(/:/g, ':') var Etimer = new Date(date) var Etime = Etimer.getTime() return Etime } module.exports = { time1, time2, time3, time4 }