2025-08-26 11:06:16 +08:00

76 lines
2.1 KiB
JavaScript

// 日期格式化工具函数
/**
* 如果是今年之展示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}年前`;
}
}