記錄分享一篇鑫哥的格式化日期
/* ** 時間戳轉換成指定格式日期 ** eg. ** dateFormat(11111111111111, 'Y年m月d日 H時i分') ** → "2322年02月06日 03時45分" */ var dateFormat = function (timestamp, formats) { // formats格式包括 // 1. Y-m-d // 2. Y-m-d H:i:s // 3. Y年m月d日 // 4. Y年m月d日 H時i分 formats = formats || 'Y-m-d'; var zero = function (value) { if (value < 10) { return '0' + value; } return value; }; var myDate = timestamp? new Date(timestamp): new Date(); var year = myDate.getFullYear(); var month = zero(myDate.getMonth() + 1); var day = zero(myDate.getDate()); var hour = zero(myDate.getHours()); var minite = zero(myDate.getMinutes()); var second = zero(myDate.getSeconds()); return formats.replace(/Y|m|d|H|i|s/ig, function (matches) { return ({ Y: year, m: month, d: day, H: hour, i: minite, s: second })[matches]; }); };
說明:timestamp缺省表示使用當前時間戳,formats默認格式是Y-m-d,例如2020-01-01。
時間戳顯示為多少分鍾前,多少天前的JS處理
方法名為dateDiff,支持一個參數timestamp,必須參數,本方法會自動補全為和JS側支持的13位數值(因為后端返回時間戳可能只精確到秒)。
/* ** 時間戳顯示為多少分鍾前,多少天前的處理 ** eg. ** console.log(dateDiff(1411111111111)); // 2014年09月19日 ** console.log(dateDiff(1481111111111)); // 9月前 ** console.log(dateDiff(1499911111111)); // 2月前 ** console.log(dateDiff(1503211111111)); // 3周前 ** console.log(dateDiff(1505283100802)); // 1分鍾前 */ var dateDiff = function (timestamp) { // 補全為13位 var arrTimestamp = (timestamp + '').split(''); for (var start = 0; start < 13; start++) { if (!arrTimestamp[start]) { arrTimestamp[start] = '0'; } } timestamp = 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 - timestamp; // 如果本地時間反而小於變量時間 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(timestamp); 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 '剛剛'; };
之前有過一篇也是封裝日期的方法:https://www.cnblogs.com/chao202426/p/11577020.html