优化 时间显示格式调整

This commit is contained in:
2025-10-12 23:39:28 +08:00
parent b2fda14451
commit 27133aa107
9 changed files with 208 additions and 70 deletions

124
src/utils/dateUtils.js Normal file
View File

@@ -0,0 +1,124 @@
import moment from 'moment'
// 设置中文语言包
import 'moment/locale/zh-cn'
moment.locale('zh-cn')
/**
* 格式化日期时间
* @param {string|Date} date - 日期对象或日期字符串
* @param {string} format - 格式化字符串,默认为 'YYYY-MM-DD HH:mm'
* @returns {string} 格式化后的日期时间字符串
*/
export const formatDateTime = (date, format = 'YYYY-MM-DD HH:mm') => {
return moment(date).format(format)
}
/**
* 格式化相对时间5分钟前2小时前等
* @param {string|Date} date - 日期对象或日期字符串
* @returns {string} 相对时间字符串
*/
export const formatRelativeTime = (date) => {
return moment(date).fromNow()
}
/**
* 格式化便签列表时间
* @param {string|Date} date - 日期对象或日期字符串
* @returns {string} 格式化后的日期时间字符串
*/
export const formatNoteListDate = (date) => {
const momentDate = moment(date)
const now = moment()
const diffDays = now.diff(momentDate, 'days')
// 今天
if (diffDays === 0) {
return momentDate.format('[今天] A h:mm').replace('AM', '上午').replace('PM', '下午')
}
// 昨天
if (diffDays === 1) {
return momentDate.format('[昨天] A h:mm').replace('AM', '上午').replace('PM', '下午')
}
// 超过两天但小于一周
if (diffDays > 1 && diffDays < 7) {
const weekdays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
return momentDate.format(`[${weekdays[momentDate.day()]}] M/D A h:mm`).replace('AM', '上午').replace('PM', '下午')
}
// 超过一周但小于一年
if (diffDays >= 7 && diffDays < 365) {
return momentDate.format(`[${diffDays}天前] M/D A h:mm`).replace('AM', '上午').replace('PM', '下午')
}
// 超过一年
return momentDate.format(`[${diffDays}天前] YYYY/M/D A h:mm`).replace('AM', '上午').replace('PM', '下午')
}
/**
* 格式化便签编辑页时间
* @param {string|Date} date - 日期对象或日期字符串
* @returns {string} 格式化后的日期时间字符串
*/
export const formatNoteEditorDate = (date) => {
const momentDate = moment(date)
const now = moment()
const diffDays = now.diff(momentDate, 'days')
// 今天
if (diffDays === 0) {
return momentDate.format('[今天] A h:mm').replace('AM', '上午').replace('PM', '下午')
}
// 昨天
if (diffDays === 1) {
return momentDate.format('[昨天] A h:mm').replace('AM', '上午').replace('PM', '下午')
}
// 超过两天但小于一个月
if (diffDays > 1 && diffDays < 30) {
return momentDate.format('M/D A h:mm').replace('AM', '上午').replace('PM', '下午')
}
// 超过一个月
return momentDate.format('YYYY/M/D A h:mm').replace('AM', '上午').replace('PM', '下午')
}
/**
* 获取过去的日期
* @param {number} amount - 数量
* @param {string} unit - 单位days, weeks, months, years等
* @returns {string} ISO格式的日期字符串
*/
export const getPastDate = (amount, unit) => {
return moment().subtract(amount, unit).toISOString()
}
/**
* 获取当前日期时间
* @returns {string} ISO格式的日期字符串
*/
export const getCurrentDateTime = () => {
return moment().toISOString()
}
/**
* 获取时间戳
* @returns {number} 时间戳
*/
export const getTimestamp = () => {
return moment().valueOf()
}
export default {
formatDateTime,
formatRelativeTime,
formatNoteListDate,
formatNoteEditorDate,
getPastDate,
getCurrentDateTime,
getTimestamp
}