直接上干貨:
在utils目錄下新建一個dateUtil.js,代碼如下:(在需要用的地方引入這個js,調用相關方法傳入對應參數就可以使用了)
該工具腳本,實用性很高,通用於各類前端項目,熟悉后亦可以自由擴展,使用中發現問題還請道友留言提示下,本人會同步更新:
//日期轉時間戳 function getUnixTime(dateStr){ var newstr = dateStr.replace(/-/g,'/'); var date = new Date(newstr); var time_str = date.getTime().toString(); return time_str.substr(0, 10); } //時間戳轉日期,falg:true表示只要年月日,part: year month date function toDate(number,flag,part) { var n = number; var date = new Date(parseInt(n) * 1000); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h = h < 10 ? ('0' + h) : h; var minute = date.getMinutes(); var second = date.getSeconds(); minute = minute < 10 ? ('0' + minute) : minute; second = second < 10 ? ('0' + second) : second; if(flag){ if(part == "year"){ return y; }else if(part == "month"){ return m; }else if(part == "date"){ return n; } return y + '-' + m + '-' + d; } return y + '-' + m + '-' + d + ' ' + h + ':' + minute+':' + second; } //判斷兩個日期時間戳相差多少天,參數為時間戳 function dateCompare(dateTimeStamp1,dateTimeStamp2){ var dayNum = 0; if(dateTimeStamp1 > dateTimeStamp2){ dayNum = Math.floor((dateTimeStamp1 - dateTimeStamp2) / 86400); }else{ dayNum = Math.floor((dateTimeStamp2 - dateTimeStamp1) / 86400); } return dayNum; } //判斷過去某個時間點到當前時間是否達到多少天,可以用來定期清理緩存 function datePassDays(dateTimeStamp,days){ var now = getUnixTime(formatDateThis(new Date())); var diffValue = now - dateTimeStamp; var limitTime = days * 86400; if(diffValue >= limitTime){ return true; } return false; } //當前日期加減天數,falg:true表示只要年月日 function mathChangeDate(date,method,days,flag){ //method:'+' || '-' //ios不解析帶'-'的日期格式,要轉成'/',不然Nan,切記 var dateVal = date.replace(/-/g, '/'); var timestamp = Date.parse(dateVal); if(method == '+'){ timestamp = timestamp / 1000 + 24 * 60 * 60 * days; } else if (method == '-'){ timestamp = timestamp / 1000 - 24 * 60 * 60 * days; } return toDate(timestamp,flag); } //時間戳轉換具體時間描述(傳入數值型時間戳) function getDateDiff(dateTimeStamp) { var result = ''; var minute = 1 * 60; var hour = minute * 60; var day = hour * 24; var halfamonth = day * 15; var month = day * 30; var now = getUnixTime(formatDateThis(new Date()));//有些特殊 不能使用 new Date() var diffValue = now - dateTimeStamp; 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; if (monthC >= 1) { result = "" + parseInt(monthC) + "月前"; } else if (weekC >= 1) { result = "" + parseInt(weekC) + "周前"; } else if (dayC >= 1) { result = "" + parseInt(dayC) + "天前"; } else if (hourC >= 1) { result = "" + parseInt(hourC) + "小時前"; } else if (minC >= 1) { result = "" + parseInt(minC) + "分鍾前"; } else result = "剛剛"; return result; }; //獲取當前年份,月份, 例: getCurrentTime(new Date(),"year") const getCurrentTime = (date,method) => { if(method == "year"){ return date.getFullYear(); }else if(method == "month"){ return date.getMonth() + 1; } return date; } //獲取當前服務器時間,參數直接用 new Date() 就可以了 const formatDateThis = date => { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const minute = date.getMinutes(); const second = date.getSeconds(); return [year, month, day].map(formatNumber).join('-') +' '+ [hour, minute, second].map(formatNumber).join(':'); } const formatTime = date => { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); return [year, month, day].map(formatNumber).join('-'); } const formatTimes = time => { const hour = time.getHours(); const minute = time.getMinutes(); const second = time.getSeconds(); return [hour, minute,second].map(formatNumber).join(':'); } //補0 const formatNumber = n => { n = n.toString(); return n[1] ? n : '0' + n; } //比較兩個時間大小(格式參考yyyy-mm-dd hh:mm:ss) function compareTime(startTime,endTime){ //結束時間大於開始時間就是true , 反之則為 false var sn = getUnixTime(startTime) * 1; var en = getUnixTime(endTime) * 1; if(en > sn){ return true; } return false; } module.exports = { dateCompare:dateCompare, getCurrentTime:getCurrentTime, getUnixTime:getUnixTime, formatDateThis:formatDateThis, formatTime: formatTime, formatTimes: formatTimes, toDate: toDate, getDateDiff: getDateDiff, mathChangeDate: mathChangeDate, compareTime: compareTime, datePassDays:datePassDays }