Skip to content

Dateformat 日期格式化

查看 sn-dateformat 的 2.0 版本差异

基础用法

  • 将时间戳格式化为指定格式的日期字符串,或转化为用户友好的相对时间(如"3分钟前"、"2天后")。
  • mode 支持两种模式:realtime 实时模式(默认,每秒刷新相对时间)与 fixed 固定模式(仅在传入值变化时计算)。
  • locale 支持 zh-cnen 两种本地化文案。
vue
<script setup lang="uts">
	const date = Date.now()
</script>
<template>
	<sn-dateformat :date="date"></sn-dateformat>
</template>

更多演示请下载 demo 查看

相对时间与阈值

组件会对与当前时间较近的日期做友好转化,threshold(单位 ms)用于控制转化阈值。将传入时间与当前时间差的绝对值记为 delta(以默认阈值 [60000, 86400000] 为例):

  • delta < 60000 时,过去的时间显示为"刚刚",未来的时间显示为"马上"(en 下为 "just now" / "right away")
  • 60000 <= delta < 86400000 时,显示为"N秒前|N秒后"、"N分钟前|N分钟后"、"N小时前|N小时后"、"N天前|N天后"、"N个月前|N个月后"、"N年前|N年后"(en 下为 "N minutes ago|later" 等)
  • delta >= 86400000 时,按 format 参数传入的格式进行格式化输出

如果不想转化为"马上|刚刚",可以传入 :threshold="[0, 86400000]";传入空数组则使用默认阈值。

固定模式(mode="fixed")下相对时间仅在 date 等值变化时计算,适合列表等静态展示场景;实时模式(mode="realtime")默认开启,每秒自动刷新。

日期格式

format 支持以下占位符(星期、月份名称随 locale 变化):

占位符示例描述
YYYY2001四位数的年份
YY01两位数的年份
MMMMJanuary月份名称
MM01-12月份,两位数
M1-12月份,从 1 开始计数
DD01一个月的某一天,两位数
D1-31一个月的某一天
ddddMonday星期全称
dddMon星期缩写
ddMo星期简写
d0-6星期数(周日为 0)
HH00-23小时数(24 小时制),两位数
H0-23小时数(24 小时制)
hh01-12小时数(12 小时制),两位数
h1-12小时数(12 小时制)
mm00-59分钟数,两位数
m0-59分钟数
ss00-59秒数,两位数
s0-59秒数
SSS000-999毫秒数,三位数
AAM PM上午或下午,大写
aam pm上午或下午,小写
Z-05:00相对于 UTC 的偏移量

属性

参数说明类型默认值可选值
date需要格式化的时间戳(单位 ms)NumberDate.now()-
format日期格式,占位符见上方"日期格式"StringYYYY-MM-DD HH:mm:ss-
threshold相对时间阈值(单位 ms),第一个值为"刚刚/马上"阈值,第二个值为格式化阈值Number[][60000, 86400000]-
mode显示模式:realtime 每秒实时刷新相对时间,fixed 仅在值变化时计算Stringrealtimefixed | realtime
locale本地化语言Stringzh-cnzh-cn | en
textColor文本颜色,支持 $ 主题色简写String''(默认主题文字色)-
textSize文本字体大小,支持 $ 动态尺寸String | Number''(默认 14px × 字体乘数)-
textFont文本字体String''-
customClass根节点(即文本节点)外部样式类String''-
customStyle根节点自定义样式UTSJSONObject | String''-
textClass文本外部样式类String''-
textStyle文本自定义样式UTSJSONObject | String''-

使用 MIT 协议