Instead of modifying the native Date.prototype, Day.js creates a wrapper for the Date object, called Dayjs object.
The Dayjs object is immutable, that is, all API operations that change the Dayjs object in some way will return a new instance of it.
- API Reference
- Parsing
- Get and Set
- Manipulating
- Displaying
- Format
.format(stringWithTokens: string) - Difference
.diff(compared: Dayjs, unit?: string, float?: boolean) - Unix Timestamp (milliseconds)
.valueOf() - Unix Timestamp (seconds)
.unix() - UTC offset (minutes)
.utcOffset() - Days in the Month
.daysInMonth() - As Javascript Date
.toDate() - As JSON
.toJSON() - As ISO 8601 String
.toISOString() - As String
.toString()
- Format
- Query
- UTC
- Plugin APIs
Calling it without parameters returns a fresh Dayjs object with the current date and time.
dayjs()Day.js also parses other date formats.
ISO 8601 string
dayjs('2018-04-04T16:00:00.000Z')dayjs(new Date(2018, 8, 18))Returns a Dayjs from a Unix timestamp (milliseconds since the Unix Epoch)
dayjs(1318781876406)Returns a Dayjs from a Unix timestamp (seconds since the Unix Epoch)
dayjs.unix(1318781876)
dayjs.unix(1318781876.721)- parse custom formats
dayjs("12-25-1995", "MM-DD-YYYY")in pluginCustomParseFormat
Returns a cloned Dayjs.
dayjs().clone()
dayjs(dayjs('2019-01-25')) // passing a Dayjs object to a constructor will also clone itReturns a boolean indicating whether the Dayjs's date is valid.
dayjs().isValid()Gets or sets the year.
dayjs().year()
dayjs().year(2000)Gets or sets the month. Starts at 0
dayjs().month()
dayjs().month(0)Gets or sets the day of the month. Starts at 1
dayjs().date()
dayjs().date(1)Gets or sets the day of the week. Starts on Sunday with 0
dayjs().day()
dayjs().day(0)Gets or sets the hour.
dayjs().hour()
dayjs().hour(12)Gets or sets the minute.
dayjs().minute()
dayjs().minute(59)Gets or sets the second.
dayjs().second()
dayjs().second(1)Gets or sets the millisecond.
dayjs().millisecond()
dayjs().millisecond(1)Returns a number with information getting from Dayjs object
dayjs().get('month') // start 0
dayjs().get('day')| Unit | Shorthand | Description |
|---|---|---|
date |
Date of Month | |
day |
d |
Day of Week (Sunday as 0, Saturday as 6) |
month |
M |
Month (January as 0, December as 11) |
year |
y |
Year |
hour |
h |
Hour |
minute |
m |
Minute |
second |
s |
Second |
millisecond |
ms |
Millisecond |
Returns a Dayjs with the applied changes.
dayjs().set('date', 1)
dayjs().set('month', 3) // April
dayjs().set('second', 30)Dayjs object can be manipulated in many ways.
dayjs('2019-01-25')
.add(1, 'day')
.subtract(1, 'year')
.toString() // Fri, 26 Jan 2018 00:00:00 GMTReturns a cloned Dayjs with a specified amount of time added.
dayjs().add(7, 'day')Returns a cloned Dayjs with a specified amount of time subtracted.
dayjs().subtract(7, 'year')Returns a cloned Dayjs set to the start of the specified unit of time.
dayjs().startOf('week') // Depends on `weekStart` in localeReturns a cloned Dayjs set to the end of the specified unit of time.
dayjs().endOf('month')Returns a string with the Dayjs's formatted date.
To escape characters, wrap them in square brackets (e.g. [A] [MM]).
dayjs().format() // current date in ISO8601, without fraction seconds e.g. '2020-04-02T08:02:17-05:00'
dayjs('2019-01-25').format('[YYYY] YYYY-MM-DDTHH:mm:ssZ[Z]') // 'YYYY 2019-01-25T00:00:00-02:00Z'
dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019'| Format | Output | Description |
|---|---|---|
YY |
18 | Two-digit year |
YYYY |
2018 | Four-digit year |
M |
1-12 | The month, beginning at 1 |
MM |
01-12 | The month, 2-digits |
MMM |
Jan-Dec | The abbreviated month name |
MMMM |
January-December | The full month name |
D |
1-31 | The day of the month |
DD |
01-31 | The day of the month, 2-digits |
d |
0-6 | The day of the week, with Sunday as 0 |
dd |
Su-Sa | The min name of the day of the week |
ddd |
Sun-Sat | The short name of the day of the week |
dddd |
Sunday-Saturday | The name of the day of the week |
H |
0-23 | The hour |
HH |
00-23 | The hour, 2-digits |
h |
1-12 | The hour, 12-hour clock |
hh |
01-12 | The hour, 12-hour clock, 2-digits |
m |
0-59 | The minute |
mm |
00-59 | The minute, 2-digits |
s |
0-59 | The second |
ss |
00-59 | The second, 2-digits |
SSS |
000-999 | The millisecond, 3-digits |
Z |
+05:00 | The offset from UTC |
ZZ |
+0500 | The offset from UTC, 2-digits |
A |
AM PM | |
a |
am pm |
- More available formats
Q Do k kk X x ...in pluginAdvancedFormat - Localized format options
L LT LTS ...in pluginLocalizedFormat
Returns a number indicating the difference of two Dayjss in the specified unit.
const date1 = dayjs('2019-01-25')
const date2 = dayjs('2018-06-05')
date1.diff(date2) // 20214000000 default milliseconds
date1.diff(date2, 'month') // 7
date1.diff(date2, 'month', true) // 7.645161290322581
date1.diff(date2, 'day') // 233Returns the number of milliseconds since the Unix Epoch for the Dayjs.
dayjs('2019-01-25').valueOf() // 1548381600000Returns the number of seconds since the Unix Epoch for the Dayjs.
dayjs('2019-01-25').unix() // 1548381600Returns the UTC offset in minutes for the Dayjs.
dayjs().utcOffset()Returns the number of days in the Dayjs's month.
dayjs('2019-01-25').daysInMonth() // 31Returns a copy of the native Date object parsed from the Dayjs object.
dayjs('2019-01-25').toDate()Returns the Dayjs formatted in an ISO8601 string.
dayjs('2019-01-25').toJSON() // '2019-01-25T02:00:00.000Z'Returns the Dayjs formatted in an ISO8601 string.
dayjs('2019-01-25').toISOString() // '2019-01-25T02:00:00.000Z'Returns a string representation of the date.
dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT'Returns a boolean indicating whether the Dayjs's date is before the other supplied Dayjs's.
dayjs().isBefore(dayjs()) // false
dayjs().isBefore(dayjs(), 'year') // falseReturns a boolean indicating whether the Dayjs's date is the same as the other supplied Dayjs's.
dayjs().isSame(dayjs()) // true
dayjs().isSame(dayjs(), 'year') // trueReturns a boolean indicating whether the Dayjs's date is after the other supplied Dayjs's.
dayjs().isAfter(dayjs()) // false
dayjs().isAfter(dayjs(), 'year') // falseReturns a boolean indicating whether a variable is a dayjs object or not.
dayjs.isDayjs(dayjs()) // true
dayjs.isDayjs(new Date()) // falseThe operator instanceof works equally well:
dayjs() instanceof dayjs // trueIf you want to parse or display in UTC, you can use .utc .local .isUTC with plugin UTC
.from .to .fromNow .toNow to get relative time
plugin RelativeTime
.isLeapYear to get is a leap year or not
plugin IsLeapYear
.week to get week of the year
plugin WeekOfYear
.weekday to get or set locale aware day of the week
plugin WeekDay
.isoWeeksInYear to get the number of weeks in year
plugin IsoWeeksInYear
.isSameOrAfter to check if a date is same of after another date
plugin IsSameOrAfter
.isSameOrBefore to check if a date is same of before another date.
plugin IsSameOrBefore
.isBetween to check if a date is between two other dates
plugin IsBetween
.quarter to get quarter of the year
plugin QuarterOfYear
.toArray to return an array that mirrors the parameters
plugin ToArray
.toObject to return an object with the date's properties
plugin ToObject
.min .max to compare given dayjs instances
plugin MinMax
.calendar to display calendar time
plugin Calendar