📄 useDateFormat¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 42 |
| 📦 Imports | 4 |
| 📊 Variables & Constants | 2 |
| 🟢 Vue Composition API | 1 |
| 📐 Interfaces | 1 |
| 📑 Type Aliases | 2 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/shared/useDateFormat/index.ts
📦 Imports¶
| Name | Source |
|---|---|
ComputedRef |
vue |
MaybeRefOrGetter |
vue |
computed |
vue |
toValue |
vue |
Variables & Constants¶
| Name | Type | Kind | Value | Exported |
|---|---|---|---|---|
REGEX_PARSE |
RegExp |
const | /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[T\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})... |
✗ |
REGEX_FORMAT |
RegExp |
const | /[YMDHhms]o\|\[([^\]]+)\]\|Y{1,4}\|M{1,4}\|D{1,2}\|d{1,4}\|H{1,2}\|h{1,2}\|a{... |
✗ |
Vue Composition API¶
| Name | Type | Reactive Variables | Composables |
|---|---|---|---|
computed |
computed | none | none |
Functions¶
formatDate(date: Date, formatStr: string, options: UseDateFormatOptions): string¶
Parameters:
dateDateformatStrstringoptionsUseDateFormatOptions
Returns: string
Calls:
date.getFullYeardate.getMonthdate.getDatedate.getHoursdate.getMinutesdate.getSecondsdate.getMillisecondsdate.getDaydateString.splitformatOrdinalString(years).slice`${month + 1}.padStart`date.toLocaleDateStringtoValue (from vue)String`${days}.padStart``${hours}.padStart``${hours % 12 || 12}.padStart``${minutes}.padStart``${seconds}.padStart``${milliseconds}.padStart`meridiemstripTimeZoneformatStr.replacecomplex_call_3992
Code
export function formatDate(date: Date, formatStr: string, options: UseDateFormatOptions = {}) {
const years = date.getFullYear()
const month = date.getMonth()
const days = date.getDate()
const hours = date.getHours()
const minutes = date.getMinutes()
const seconds = date.getSeconds()
const milliseconds = date.getMilliseconds()
const day = date.getDay()
const meridiem = options.customMeridiem ?? defaultMeridiem
const stripTimeZone = (dateString: string) => {
return dateString.split(' ')[1] ?? ''
}
const matches: Record<string, () => string | number> = {
Yo: () => formatOrdinal(years),
YY: () => String(years).slice(-2),
YYYY: () => years,
M: () => month + 1,
Mo: () => formatOrdinal(month + 1),
MM: () => `${month + 1}`.padStart(2, '0'),
MMM: () => date.toLocaleDateString(toValue(options.locales), { month: 'short' }),
MMMM: () => date.toLocaleDateString(toValue(options.locales), { month: 'long' }),
D: () => String(days),
Do: () => formatOrdinal(days),
DD: () => `${days}`.padStart(2, '0'),
H: () => String(hours),
Ho: () => formatOrdinal(hours),
HH: () => `${hours}`.padStart(2, '0'),
h: () => `${hours % 12 || 12}`.padStart(1, '0'),
ho: () => formatOrdinal(hours % 12 || 12),
hh: () => `${hours % 12 || 12}`.padStart(2, '0'),
m: () => String(minutes),
mo: () => formatOrdinal(minutes),
mm: () => `${minutes}`.padStart(2, '0'),
s: () => String(seconds),
so: () => formatOrdinal(seconds),
ss: () => `${seconds}`.padStart(2, '0'),
SSS: () => `${milliseconds}`.padStart(3, '0'),
d: () => day,
dd: () => date.toLocaleDateString(toValue(options.locales), { weekday: 'narrow' }),
ddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: 'short' }),
dddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: 'long' }),
A: () => meridiem(hours, minutes),
AA: () => meridiem(hours, minutes, false, true),
a: () => meridiem(hours, minutes, true),
aa: () => meridiem(hours, minutes, true, true),
z: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: 'shortOffset' })),
zz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: 'shortOffset' })),
zzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: 'shortOffset' })),
zzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: 'longOffset' })),
}
return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 ?? matches[match]?.() ?? match)
}
normalizeDate(date: DateLike): Date¶
Parameters:
dateDateLike
Returns: Date
Calls:
/Z$/i.testdate.match(d[7] || '0').substring
Code
export function normalizeDate(date: DateLike) {
if (date === null)
return new Date(Number.NaN) // null is invalid
if (date === undefined)
return new Date()
if (date instanceof Date)
return new Date(date)
if (typeof date === 'string' && !/Z$/i.test(date)) {
const d = date.match(REGEX_PARSE) as any
if (d) {
const m = d[2] - 1 || 0
const ms = (d[7] || '0').substring(0, 3)
return new Date(d[1], m, d[3]
|| 1, d[4] || 0, d[5] || 0, d[6] || 0, ms)
}
}
return new Date(date)
}
useDateFormat(date: MaybeRefOrGetter<DateLike>, formatStr: MaybeRefOrGetter<string>, options: UseDateFormatOptions): UseDateFormatReturn¶
Get the formatted date according to the string of tokens passed in.
Parameters:
dateany: The date to format, can either be aDateobject, a timestamp, or a stringformatStrany: The combination of tokens to format the dateoptionsany: UseDateFormatOptions
See: https://vueuse.org/useDateFormat
Tags: @__NO_SIDE_EFFECTS__
Raw JSDoc
/**
* 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__
*/
Calls:
computed (from vue)formatDatenormalizeDatetoValue (from vue)
Code
defaultMeridiem(hours: number, minutes: number, isLowercase: boolean, hasPeriod: boolean): string¶
Parameters:
hoursnumberminutesnumberisLowercasebooleanhasPeriodboolean
Returns: string
Calls:
m.split('').reducem.toLowerCase
Code
formatOrdinal(num: number): string¶
Parameters:
numnumber
Returns: string
Code
Internal helpers¶
Declared inside another function in this file.
stripTimeZone(dateString: string): string¶
Parameters:
dateStringstring
Returns: string
Calls:
dateString.split
Yo(): string¶
Returns: string
Calls:
formatOrdinal
YY(): string¶
Returns: string
Calls:
String(years).slice
YYYY(): number¶
Returns: number
M(): number¶
Returns: number
Mo(): string¶
Returns: string
Calls:
formatOrdinal
MM(): string¶
Returns: string
Calls:
`${month + 1}.padStart`
MMM(): string¶
Returns: string
Calls:
date.toLocaleDateString
MMMM(): string¶
Returns: string
Calls:
date.toLocaleDateString
D(): string¶
Returns: string
Calls:
String
Do(): string¶
Returns: string
Calls:
formatOrdinal
DD(): string¶
Returns: string
Calls:
`${days}.padStart`
H(): string¶
Returns: string
Calls:
String
Ho(): string¶
Returns: string
Calls:
formatOrdinal
HH(): string¶
Returns: string
Calls:
`${hours}.padStart`
h(): string¶
Returns: string
Calls:
`${hours % 12 || 12}.padStart`
ho(): string¶
Returns: string
Calls:
formatOrdinal
hh(): string¶
Returns: string
Calls:
`${hours % 12 || 12}.padStart`
m(): string¶
Returns: string
Calls:
String
mo(): string¶
Returns: string
Calls:
formatOrdinal
mm(): string¶
Returns: string
Calls:
`${minutes}.padStart`
s(): string¶
Returns: string
Calls:
String
so(): string¶
Returns: string
Calls:
formatOrdinal
ss(): string¶
Returns: string
Calls:
`${seconds}.padStart`
SSS(): string¶
Returns: string
Calls:
`${milliseconds}.padStart`
d(): number¶
Returns: number
dd(): string¶
Returns: string
Calls:
date.toLocaleDateString
ddd(): string¶
Returns: string
Calls:
date.toLocaleDateString
dddd(): string¶
Returns: string
Calls:
date.toLocaleDateString
A(): string¶
Returns: string
Calls:
meridiem
AA(): string¶
Returns: string
Calls:
meridiem
a(): string¶
Returns: string
Calls:
meridiem
aa(): string¶
Returns: string
Calls:
meridiem
z(): string¶
Returns: string
Calls:
stripTimeZone
Code
zz(): string¶
Returns: string
Calls:
stripTimeZone
Code
zzz(): string¶
Returns: string
Calls:
stripTimeZone
Code
zzzz(): string¶
Returns: string
Calls:
stripTimeZone
Code
Interfaces¶
UseDateFormatOptions¶
Interface Code
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
}
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
locales |
MaybeRefOrGetter<Intl.LocalesArgument> |
✓ | not shown |
customMeridiem |
(hours: number, minutes: number, isLowercase?: boolean, hasPeriod?: boolean) ... |
✓ | not shown |
Type Aliases¶
DateLike¶
UseDateFormatReturn¶
Generated by Syntax Scribe