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 (default: 'milliseconds'), float?: boolean)
- Unix Timestamp (milliseconds)
.valueOf()
- Unix Timestamp (seconds)
.unix()
- UTC offset (minutes)
.utcOffset()
- Days in the Month
.daysInMonth()
- As Javascript Date
.toDate()
- As Array
.toArray()
- As JSON
.toJSON()
- As ISO 8601 String
.toISOString()
- As Object
.toObject()
- As String
.toString()
- Format
- Query
- 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 it
Returns a boolean
indicating whether the Dayjs
's date is valid.
dayjs().isValid()
Returns a number
representing the Dayjs
's year.
dayjs().year()
Returns a number
representing the Dayjs
's month. Starts at 0
dayjs().month()
Returns a number
representing the Dayjs
's day of the month. Starts at 1
dayjs().date()
Returns a number
representing the Dayjs
's day of the week. Starts on Sunday with 0
dayjs().day()
Returns a number
representing the Dayjs
's hour.
dayjs().hour()
Returns a number
representing the Dayjs
's minute.
dayjs().minute()
Returns a number
representing the Dayjs
's second.
dayjs().second()
Returns a number
representing the Dayjs
's millisecond.
dayjs().millisecond()
Returns a Dayjs
with the applied changes.
dayjs().set('date', 1)
dayjs().set('month', 3) // April
dayjs().set('second', 30)
Unit | Shorthand | Description |
---|---|---|
date |
Date of Month | |
day |
d |
Day of Week (Sunday as 0, Saturday as 6) |
month |
M |
Month |
year |
y |
Year |
hour |
h |
Hour |
minute |
m |
Minute |
second |
s |
Second |
millisecond |
ms |
Millisecond |
Dayjs
objects can be manipulated in many ways.
dayjs('2019-01-25')
.add(1, 'day')
.subtract(1, 'year')
.toString() // Fri, 26 Jan 2018 00:00:00 GMT
Returns 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 locale
Returns 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 ISO6801, 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 |
+5: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 Dayjs
s in the specified unit.
const date1 = dayjs('2019-01-25')
const date2 = dayjs('2018-06-05')
date1.diff(date2) // 20214000000
date1.diff(date2, 'month') // 7
date1.diff(date2, 'month', true) // 7.645161290322581
date1.diff(date2, 'day') // 233
Returns the number
of milliseconds since the Unix Epoch for the Dayjs
.
dayjs('2019-01-25').valueOf() // 1548381600000
Returns the number
of seconds since the Unix Epoch for the Dayjs
.
dayjs('2019-01-25').unix() // 1548381600
Returns 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() // 31
Returns a copy of the native Date
object parsed from the Dayjs
object.
dayjs('2019-01-25').toDate()
Returns an array
that mirrors the parameters from new Date().
dayjs('2019-01-25').toArray() // [ 2019, 0, 25, 0, 0, 0, 0 ]
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 an object
with the date's properties.
dayjs('2019-01-25').toObject()
/* { years: 2019,
months: 0,
date: 25,
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0 } */
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') // false
Returns 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') // true
Returns a boolean
indicating whether the Dayjs
's date is after the other supplied Dayjs
's.
dayjs().isAfter(dayjs()) // false
dayjs().isAfter(dayjs(), 'year') // false
Returns a boolean
indicating whether a variable is a dayjs object or not.
dayjs.isDayjs(dayjs()) // true
dayjs.isDayjs(new Date()) // false
The operator instanceof
works equally well:
dayjs() instanceof dayjs // true
.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
.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