跳到主要内容

useTimeAgo

分类
导出大小
1.42 kB
上次更改
3 个月前

响应式时间差。当时间变化时,自动更新时间差字符串。

演示

用法

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

组件用法

此函数还通过 @vueuse/components 包提供了一个无渲染组件版本。了解更多用法

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)) // string

类型声明

显示类型声明
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
,
> { /** * Maximum unit (of diff in milliseconds) to display the full date instead of relative * * @default undefined */
max
?:
UnitNames
| number
/** * Formatter for full date */
fullDateFormatter
?: (
date
: Date) => string
/** * Messages for formatting the string */
messages
?:
UseTimeAgoMessages
<
UnitNames
>
/** * Minimum display time unit (default is minute) * * @default false */
showSecond
?: boolean
/** * Rounding method to apply. * * @default 'round' */
rounding
?: "round" | "ceil" | "floor" | number
/** * Custom units */
units
?:
UseTimeAgoUnit
<
UnitNames
>[]
} export interface
UseTimeAgoOptions
<
Controls
extends boolean,
UnitNames
extends string =
UseTimeAgoUnitNamesDefault
,
> extends
FormatTimeAgoOptions
<
UnitNames
> {
/** * Expose more controls * * @default false */
controls
?:
Controls
/** * Intervals to update, set 0 to disable auto update * * @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>
/** * Reactive time ago formatter. * * @see https://vueuse.org.cn/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
NoiseFan
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)!: 重构组件并使其保持一致 (#4912)
v13.6.0
d32f8 - refactor: 为所有纯函数添加 @__NO_SIDE_EFFECTS__ 注释 (#4907)
v12.8.0
7432f - feat(types): 废弃 MaybeRefMaybeRefOrGetter,转而使用 Vue 的原生类型 (#4636)
v12.3.0
59f75 - feat(toValue): 废弃 @vueuse/shared 中的 toValue,转而使用 Vue 的原生函数
0a9ed - feat!: 放弃对 Vue 2 的支持,优化打包并清理 (#4349)
v10.7.2
1d6be - 修复: 为 units 字段支持自定义 UnitNames 类型 (#3684)

根据 MIT 许可证发布。