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 or curly brackets (e.g. [G] {um}
).
dayjs().format(); // current date in ISO6801, without fraction seconds e.g. '2020-04-02T08:02:17-05:00'
dayjs("2019-01-25").format("{YYYY} MM-DDTHH:mm:ssZ[Z]"); // '{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