// 日期格式化工具函数 /** * 如果是今年之展示xx月xxx日 * 如果是去年之展示xx年xx月xx日 * 如果是今年之前之展示xx年xx月xx日 * 如果是今年之后之展示xx月xx日 */ /** * 格式化浏览日期 * @param {string|Date} date - 日期字符串或Date对象 * @returns {string} 格式化后的日期字符串 */ export function formatBrowseDate(date) { if (!date) return ''; const targetDate = new Date(date); const currentDate = new Date(); const currentYear = currentDate.getFullYear(); const targetYear = targetDate.getFullYear(); // 获取月份和日期 const month = targetDate.getMonth() + 1; const day = targetDate.getDate(); // 如果是今年 if (targetYear === currentYear) { return `${month}月${day}日`; } // 如果是去年 else if (targetYear === currentYear - 1) { return `${targetYear}年${month}月${day}日`; } // 如果是今年之前 else if (targetYear < currentYear) { return `${targetYear}年${month}月${day}日`; } // 如果是今年之后(未来日期) else { return `${month}月${day}日`; } } /** * 获取相对时间描述 * @param {string|Date} date - 日期字符串或Date对象 * @returns {string} 相对时间描述 */ export function getRelativeTime(date) { if (!date) return ''; const targetDate = new Date(date); const currentDate = new Date(); const diffTime = currentDate - targetDate; const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24)); if (diffDays === 0) { return '今天'; } else if (diffDays === 1) { return '昨天'; } else if (diffDays === 2) { return '前天'; } else if (diffDays < 7) { return `${diffDays}天前`; } else if (diffDays < 30) { const weeks = Math.floor(diffDays / 7); return `${weeks}周前`; } else if (diffDays < 365) { const months = Math.floor(diffDays / 30); return `${months}个月前`; } else { const years = Math.floor(diffDays / 365); return `${years}年前`; } }