Skip to content

useDateFormat

Category
Export Size
972 B
Last Changed
4 days ago

Get the formatted date according to the string of tokens passed in, inspired by dayjs.

List of all available formats (HH:mm:ss by default):

FormatOutputDescription
Yo2018thOrdinal formatted year
YY18Two-digit year
YYYY2018Four-digit year
M1-12The month, beginning at 1
Mo1st, 2nd, ..., 12thThe month, ordinal formatted
MM01-12The month, 2-digits
MMMJan-DecThe abbreviated month name
MMMMJanuary-DecemberThe full month name
D1-31The day of the month
Do1st, 2nd, ..., 31stThe day of the month, ordinal formatted
DD01-31The day of the month, 2-digits
H0-23The hour
Ho0th, 1st, 2nd, ..., 23rdThe hour, ordinal formatted
HH00-23The hour, 2-digits
h1-12The hour, 12-hour clock
ho1st, 2nd, ..., 12thThe hour, 12-hour clock, sorted
hh01-12The hour, 12-hour clock, 2-digits
m0-59The minute
mo0th, 1st, ..., 59thThe minute, ordinal formatted
mm00-59The minute, 2-digits
s0-59The second
so0th, 1st, ..., 59thThe second, ordinal formatted
ss00-59The second, 2-digits
SSS000-999The millisecond, 3-digits
AAM PMThe meridiem
AAA.M. P.M.The meridiem, periods
aam pmThe meridiem, lowercase
aaa.m. p.m.The meridiem, lowercase and periods
d0-6The day of the week, with Sunday as 0
ddS-SThe min name of the day of the week
dddSun-SatThe short name of the day of the week
ddddSunday-SaturdayThe name of the day of the week
zGMT, GMT+1The timezone with offset
zzGMT, GMT+1The timezone with offset
zzzGMT, GMT+1The timezone with offset
zzzzGMT, GMT+01:00The long timezone with offset
  • Meridiem is customizable by defining customMeridiem in options.

Demo

Friday 2025-08-15 14:50:12

Formatter Editor :

Usage

Basic

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>

Use with locales

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>

Use with custom meridiem

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>

Type Declarations

Show Type Declarations
ts
export type 
DateLike
= Date | number | string | undefined
export interface UseDateFormatOptions { /** * The locale(s) to used for dd/ddd/dddd/MMM/MMMM format * * [MDN](https://developer.mozilla.org/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
export type
UseDateFormatReturn
=
ComputedRef
<string>
/** * Get the formatted date according to the string of tokens passed in. * * @see https://vueuse.org/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 * * @__NO_SIDE_EFFECTS__ */ export declare function
useDateFormat
(
date
:
MaybeRefOrGetter
<
DateLike
>,
formatStr
?:
MaybeRefOrGetter
<string>,
options
?: UseDateFormatOptions,
):
UseDateFormatReturn

Source

SourceDemoDocs

Contributors

NoiseFan

Changelog

No recent changes

Released under the MIT License.