timeAgo
将日期转换为相对时间描述
语言设置
时间预设
原始时间
2025/12/9 09:39:15
相对时间
1天前 自动更新中...
函数签名
typescript
function timeAgo(
date: Date | number | string,
locale?: 'zh' | 'en'
): string参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
date | Date | number | string | 是 | 日期对象、时间戳或日期字符串 |
locale | 'zh' | 'en' | 否 | 语言设置,默认为 'zh' |
返回值
| 类型 | 说明 |
|---|---|
string | 相对时间描述 |
异常
| 错误类型 | 触发条件 | 错误信息 |
|---|---|---|
Error | 无效的日期 | 'Invalid date' |
工作原理
- 将输入转换为 Date 对象并验证
- 计算当前时间与目标时间的差值
- 根据时间差选择合适的单位(秒、分钟、小时、天、月、年)
- 根据语言设置返回相应的描述文本
- 对于小于10秒的差值,显示"刚刚"
时间范围对照表
| 时间差 | 中文 | 英文 |
|---|---|---|
| < 10秒 | 刚刚 | just now |
| < 1分钟 | N秒前 | N second(s) ago |
| < 1小时 | N分钟前 | N minute(s) ago |
| < 1天 | N小时前 | N hour(s) ago |
| < 30天 | N天前 | N day(s) ago |
| < 365天 | N个月前 | N month(s) ago |
| ≥ 365天 | N年前 | N year(s) ago |
使用示例
中文格式
typescript
const now = Date.now()
timeAgo(now - 30000)
// '30秒前'
timeAgo(now - 3600000)
// '1小时前'
timeAgo(now - 86400000)
// '1天前'英文格式
typescript
const now = Date.now()
timeAgo(now - 30000, 'en')
// '30 seconds ago'
timeAgo(now - 3600000, 'en')
// '1 hour ago'
timeAgo(now - 172800000, 'en')
// '2 days ago'