76 lines
2.1 KiB
JavaScript
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}年前`;
|
|
}
|
|
}
|