Skip to content

useTimeAgo

类别
导出体积
1.42 kB
上次更改
2 months ago

响应式的相对时间。当时间发生变化时,自动更新相对时间字符串。

示例

用法

ts
import { 
useTimeAgo
} from '@vueuse/core'
const
timeAgo
=
useTimeAgo
(new
Date
(2021, 0, 1))

组件用法

vue
<template>
  <UseTimeAgo v-slot="{ 
timeAgo
}"
:time
="new
Date
(2021, 0, 1)">
Time Ago: {{
timeAgo
}}
</UseTimeAgo> </template>

非响应式用法

如果你不需要响应性,可以使用 formatTimeAgo 函数获取格式化的字符串,而不是一个 Ref。

ts
import { 
formatTimeAgo
} from '@vueuse/core'
const
timeAgo
=
formatTimeAgo
(new
Date
(2021, 0, 1)) // 字符串

类型声明

显示类型声明
ts
export type 
UseTimeAgoFormatter
<
T
= number> = (
value
:
T
,
isPast
: boolean,
) => string export type
UseTimeAgoUnitNamesDefault
=
| "second" | "minute" | "hour" | "day" | "week" | "month" | "year" export interface UseTimeAgoMessagesBuiltIn {
justNow
: string
past
: string |
UseTimeAgoFormatter
<string>
future
: string |
UseTimeAgoFormatter
<string>
invalid
: string
} export type
UseTimeAgoMessages
<
UnitNames
extends string =
UseTimeAgoUnitNamesDefault
,
> = UseTimeAgoMessagesBuiltIn &
Record
<
UnitNames
, string |
UseTimeAgoFormatter
<number>>
export interface
FormatTimeAgoOptions
<
UnitNames
extends string =
UseTimeAgoUnitNamesDefault
,
> { /** * 最大单位(以毫秒为单位)在显示完整日期而不是相对时间之前显示 * * @default undefined */
max
?:
UnitNames
| number
/** * 完整日期的格式化程序 */
fullDateFormatter
?: (
date
: Date) => string
/** * 格式化字符串的消息 */
messages
?:
UseTimeAgoMessages
<
UnitNames
>
/** * 最小显示时间单位(默认为分钟) * * @default false */
showSecond
?: boolean
/** * 应用的舍入方法。 * * @default 'round' */
rounding
?: "round" | "ceil" | "floor" | number
/** * 自定义单位 */
units
?:
UseTimeAgoUnit
<
UnitNames
>[]
} export interface
UseTimeAgoOptions
<
Controls
extends boolean,
UnitNames
extends string =
UseTimeAgoUnitNamesDefault
,
> extends
FormatTimeAgoOptions
<
UnitNames
> {
/** * 公开更多控件 * * @default false */
controls
?:
Controls
/** * 更新间隔,设置为 0 以禁用自动更新 * * @default 30_000 */
updateInterval
?: number
} export interface
UseTimeAgoUnit
<
Unit
extends string =
UseTimeAgoUnitNamesDefault
,
> {
max
: number
value
: number
name
:
Unit
} export type
UseTimeAgoReturn
<
Controls
extends boolean = false> =
Controls
extends true
? {
timeAgo
:
ComputedRef
<string>
} &
Pausable
:
ComputedRef
<string>
/** * 响应式的时间过去格式化工具。 * * @see https://vueuse.org/useTimeAgo * * @__NO_SIDE_EFFECTS__ */ export declare function
useTimeAgo
<
UnitNames
extends string =
UseTimeAgoUnitNamesDefault
,
>(
time
:
MaybeRefOrGetter
<Date | number | string>,
options
?:
UseTimeAgoOptions
<false,
UnitNames
>,
):
UseTimeAgoReturn
<false>
export declare function
useTimeAgo
<
UnitNames
extends string =
UseTimeAgoUnitNamesDefault
,
>(
time
:
MaybeRefOrGetter
<Date | number | string>,
options
:
UseTimeAgoOptions
<true,
UnitNames
>,
):
UseTimeAgoReturn
<true>
export declare function
formatTimeAgo
<
UnitNames
extends string =
UseTimeAgoUnitNamesDefault
,
>(
from
: Date,
options
?:
FormatTimeAgoOptions
<
UnitNames
>,
now
?: Date | number,
): string

源码

源码演示文档

贡献者

Anthony Fu
一纸忘忧
Anthony Fu
SerKo
IlyaL
Robin
IlyaL
OrbisK
Nick Messing
WORMSS
vaakian X
Demian
Joaquín Sánchez
Connor 'Birb' McCormick
836334258
sun0day
azaleta
vaakian X
Jelf
wheat
Alex Kozack

更新日志

8c521 - feat(components)!: refactor components and make them consistent (#4912)
d32f8 - refactor: add @__NO_SIDE_EFFECTS__ annotations to all pure functions (#4907)
7432f - feat(types): deprecate MaybeRef and MaybeRefOrGetter in favor of Vue's native (#4636)
59f75 - feat(toValue): deprecate toValue from @vueuse/shared in favor of Vue's native
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
1d6be - fix: Support custom UnitNames type for units field (#3684)