useDateFormat

一个无依赖的 React Hook,用于使用符号格式化日期,类似于诸如 dayjsmomentjsdate-fns 等库中的 format 函数。

提示

默认情况下,格式化行为与 dayjsmomentjsdate-fns@^1 一致。您可以将 unicodeSymbols 选项设置为 true 以使用 Unicode 标准日期符号,这类似于 date-fns@^2 及以后版本。

演示

尝试编辑下面的格式模板,查看结果。

源码

Convention Date Symbols (by default)

Format:
YYYY-MM-DD ddd HH:mm:ss.SSS
Result:
2024-11-12 Tuesday 08:39:57.111
Result:
Now is 2024-11-12 Tuesday 08:39:57 A.M.
Template:

Unicode Standard Date Symbols

Format:
yyyy-MM-dd eee HH:mm:ss.SSS
Result:
2024-11-12 Tuesday 08:39:57.111
Result:
Now is 2024-11-12 Tuesday 08:39:57 am
Template:

用法

请查看 API。

格式化符号 Format Symbols

约定式Unicode输出描述是否相同
Yo-2024th序数格式年份-
YYyy24两位数年份
YYYYyyyy2024四位数年份
MM1-12月份,从 1 开始
Mo-1st, 2nd, ..., 12th月份,序数格式-
MMMM01-12月份,两位数
MMMMMMJan-Dec缩写月份名
MMMMMMMMJanuary-December完整月份名
Dd1-31月份中的日期
Do-1st, 2nd, ..., 31st月份中的日期,序数格式-
DDdd01-31月份中的日期,两位数
HH0-23小时
Ho-0th, 1st, 2nd, ..., 23rd小时,序数格式-
HHHH00-23小时,两位数
hh1-1212 小时制小时
ho-1st, 2nd, ..., 12th12 小时制小时,序数格式-
hhhh01-1212 小时制小时,两位数
mm0-59分钟
mo-0th, 1st, ..., 59th分钟,序数格式-
mmmm00-59分钟,两位数
ss0-59秒数
so-0th, 1st, ..., 59th秒数,序数格式-
ssss00-59秒数,两位数
SS0-9毫秒,1 位数
SSSS00-99毫秒,两位数
SSSSSS000-999毫秒,三位数
A-AM PM上下午-
AA-A.M. P.M.上下午,带点-
aaaaaam pm上下午,小写
aa-a.m. p.m.上下午,小写,带点-
d-0-6星期几,以星期日为 0-
ddeeeeeS-S当地星期几的缩写名
dddeeeSun-Sat当地星期几的短名字
ddddeeeeSunday-Saturday当地星期几的名称

可通过 options 中的 customMeridiem 自定义上下午。

源码

点击下方链接跳转 GitHub 查看源代码。

API

const dateStr = useDateFormat(dateLike, format, options)

类日期 DateLike

export type DateLike = Date | number | string

格式模版 Format

表示输出日期字符串格式的 string。默认为 YYYY-MM-DD HH:mm:ss

选项 Options

export type FormatDateOptions = { /** * 是否使用 Unicode 日期符号。 * * @see https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table * * @defaultValue false */ unicodeSymbols?: boolean /** * locales 参数表示要使用的语言环境。 */ locales?: Intl.LocalesArgument /** * 格式化上下午的自定义函数。 */ customMeridiem?: ( hours: number, minutes: number, isLowercase?: boolean, hasPeriod?: boolean ) => string } export type UseDateFormatOptions = FormatDateOptions & { /** * 当日期无效时的默认字符串。 */ fallback?: string }

返回值

表示格式化日期字符串的 string