export const formatTime = 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 formatNumber = n => { n = n.toString(); return n[1] ? n : '0' + n; }; export const getNowdate = 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; }; /** * 日期格式化 * @param { String | Objcet } time js 时间格式的字符串; java 时间格式的字符串; js 时间对象 * @param { String } pattern day.js 的占位符字符 * @returns String 格式化后的时间 */ export const parseTime = (time, pattern) => { if (arguments.length === 0 || !time) { return null } const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' let date if (typeof time === 'object') { date = time } else { if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { time = parseInt(time) } else if (typeof time === 'string') { time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), ''); } if ((typeof time === 'number') && (time.toString().length === 10)) { time = time * 1000 } date = new Date(time) } const formatObj = { y: date.getFullYear(), m: date.getMonth() + 1, d: date.getDate(), h: date.getHours(), i: date.getMinutes(), s: date.getSeconds(), a: date.getDay() } const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { let value = formatObj[key] // Note: getDay() returns 0 on Sunday if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } if (result.length > 0 && value < 10) { value = '0' + value } return value || 0 }) return time_str } /** * @desc 格式化日期字符串 * @param { Nubmer} - 时间戳 * @returns { String } 格式化后的日期字符串 */ export function formatDate(timestamp) { // 补全为13位 let arrTimestamp = (timestamp + '').split(''); for (let start = 0; start < 13; start++) { if (!arrTimestamp[start]) { arrTimestamp[start] = '0'; } } timestamp = arrTimestamp.join('') * 1; let minute = 1000 * 60; let hour = minute * 60; let day = hour * 24; let month = day * 30; let now = new Date().getTime(); let diffValue = now - timestamp; // 如果本地时间反而小于变量时间 if (diffValue < 0) { return '不久前'; } // 计算差异时间的量级 let monthC = diffValue / month; let weekC = diffValue / (7 * day); let dayC = diffValue / day; let hourC = diffValue / hour; let minC = diffValue / minute; // 数值补0方法 let zero = function (value) { if (value < 10) { return '0' + value; } return value; }; if (monthC > 4) { // 超过1年,直接显示年月日 return (function () { let 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 '刚刚'; }