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 it
Returns 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 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 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 Dayjs
s 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') // 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 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') // 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
If 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