跳至内容

useDateFormat

类别
导出大小
807 B
上次更改
上个月

根据传入的标记字符串获取格式化的日期,灵感来自 dayjs

所有可用格式的列表(默认情况下为 HH:mm:ss)

格式输出描述
Yo2018th序数格式的年份
YY18两位数的年份
YYYY2018四位数的年份
M1-12月份,从 1 开始
Mo1st, 2nd, ..., 12th月份,序数格式
MM01-12月份,两位数
MMMJan-Dec月份的缩写名称
MMMMJanuary-December月份的全称
D1-31月份中的日期
Do1st, 2nd, ..., 31st月份中的日期,序数格式
DD01-31月份中的日期,两位数
H0-23小时
Ho0th, 1st, 2nd, ..., 23rd小时,序数格式
HH00-23小时,两位数
h1-12小时,12 小时制
ho1st, 2nd, ..., 12th小时,12 小时制,排序
hh01-12小时,12 小时制,两位数
m0-59分钟
mo0th, 1st, ..., 59th分钟,序数格式
mm00-59分钟,两位数
s0-59
so0th, 1st, ..., 59th秒,序数格式
ss00-59秒,两位数
SSS000-999毫秒,三位数
AAM PM上午/下午
AAA.M. P.M.上午/下午,带句点
aam pm上午/下午,小写
aaa.m. p.m.上午/下午,小写带句点
d0-6一周中的日期,星期日为 0
ddS-S一周中日期的最小名称
dddSun-Sat一周中日期的简称
ddddSunday-Saturday一周中日期的全称
  • 可以通过在 `options` 中定义 `customMeridiem` 来自定义上午/下午。

演示

星期三 2024-10-30 19:38:19

格式化程序编辑器

用法

基本用法

vue
<script setup lang="ts">
import { useDateFormat, useNow } from '@vueuse/core'

const formatted = useDateFormat(useNow(), 'YYYY-MM-DD HH:mm:ss')
</script>

<template>
  <div>{{ formatted }}</div>
</template>

使用语言环境

vue
<script setup lang="ts">
import { useDateFormat, useNow } from '@vueuse/core'

const formatted = useDateFormat(useNow(), 'YYYY-MM-DD (ddd)', { locales: 'en-US' })
</script>

<template>
  <div>{{ formatted }}</div>
</template>

使用自定义的上午/下午

vue
<script setup lang="ts">
import { useDateFormat } from '@vueuse/core'

function customMeridiem(hours: number, minutes: number, isLowercase?: boolean, hasPeriod?: boolean) {
  const m = hours > 11 ? (isLowercase ? 'μμ' : 'ΜΜ') : (isLowercase ? 'πμ' : 'ΠΜ')
  return hasPeriod ? m.split('').reduce((acc, current) => acc += `${current}.`, '') : m
}

const am = useDateFormat('2022-01-01 05:05:05', 'hh:mm:ss A', { customMeridiem })
// am.value = '05:05:05 ΠΜ'
const pm = useDateFormat('2022-01-01 17:05:05', 'hh:mm:ss AA', { customMeridiem })
// pm.value = '05:05:05 Μ.Μ.'
</script>

类型声明

显示类型声明
typescript
export type DateLike = Date | number | string | undefined
export interface UseDateFormatOptions {
  /**
   * The locale(s) to used for dd/ddd/dddd/MMM/MMMM format
   *
   * [MDN](https://mdn.org.cn/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).
   */
  locales?: MaybeRefOrGetter<Intl.LocalesArgument>
  /**
   * A custom function to re-modify the way to display meridiem
   *
   */
  customMeridiem?: (
    hours: number,
    minutes: number,
    isLowercase?: boolean,
    hasPeriod?: boolean,
  ) => string
}
export declare function formatDate(
  date: Date,
  formatStr: string,
  options?: UseDateFormatOptions,
): string
export declare function normalizeDate(date: DateLike): Date
/**
 * Get the formatted date according to the string of tokens passed in.
 *
 * @see https://vueuse.org.cn/useDateFormat
 * @param date - The date to format, can either be a `Date` object, a timestamp, or a string
 * @param formatStr - The combination of tokens to format the date
 * @param options - UseDateFormatOptions
 */
export declare function useDateFormat(
  date: MaybeRefOrGetter<DateLike>,
  formatStr?: MaybeRefOrGetter<string>,
  options?: UseDateFormatOptions,
): ComputedRef<string>
export type UseDateFormatReturn = ReturnType<typeof useDateFormat>

源代码

源代码示例文档

贡献者

Anthony Fu
Anthony Fu
webfansplz
OrbisK
Poet
Dachen
Dino Čamdžić
丶远方
sun0day
Levi (Nguyễn Lương Huy)
Vasya Ponomarenko
aki77
Black

更新日志

v11.0.0-beta.2 于 2024年7月17日
4a7a8 - feat: locales 现在是响应式的 (#3907)
v10.6.0 于 2023年11月9日
61ceb - feat: 添加日期序数格式化 (#3474)
v10.3.0 于 2023年7月30日
d6428 - fix: 正确处理零 (#3272)
v10.1.0 于 2023年4月22日
a2147 - fix: 如果提供 Y 或 YYY 则会报错 (#3001)
v10.0.0-beta.4 于 2023年4月13日
4d757 - feat(types)!: 将 MaybeComputedRef 重命名为 MaybeRefOrGetter
0a72b - feat(toValue): 将 resolveUnref 重命名为 toValue
v9.3.0 于 2022年9月26日
3fda6 - feat: 支持子午线格式 (#2011)
39b27 - feat: 支持 MMM 和 MMMM 格式化程序 (#2234)

在 MIT 许可证下发布。