Temporal.PlainDate.prototype.daysInMonth
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The daysInMonth
accessor property of Temporal.PlainDate
instances returns a positive integer representing the number of days in the month of this date. It is calendar-dependent.
Note that the days in month is not always equal to the day
of the last day of the month, in the rare case where a month may have a few days skipped.
The set accessor of daysInMonth
is undefined
. You cannot change this property directly.
Examples
Using daysInMonth
const date = Temporal.PlainDate.from("2021-07-01");
console.log(date.daysInMonth); // 31
const date2 = Temporal.PlainDate.from("2021-02-01");
console.log(date2.daysInMonth); // 28; 2021 is not a leap year
const date3 = Temporal.PlainDate.from("2020-02-01");
console.log(date3.daysInMonth); // 29; 2020 is a leap year
const date4 = Temporal.PlainDate.from("2021-04-01[u-ca=chinese]");
console.log(date4.month); // 2
console.log(date4.daysInMonth); // 30; the Chinese 2nd month has 30 days
Changing to the second last day of the month
You can use daysInMonth
to change to the second last day of the month:
const date = Temporal.PlainDate.from("2021-07-01");
const secondLastDay = date.with({ day: date.daysInMonth - 1 });
console.log(secondLastDay.toString()); // 2021-07-30
This is not totally safe, though, because daysInMonth
is not guaranteed to have any connection with the day index. Here's a safer way to get the second last day:
const date = Temporal.PlainDate.from("2021-07-01");
const secondLastDay = date
.with({ day: Number.MAX_SAFE_INTEGER })
.subtract({ days: 1 });
console.log(secondLastDay.toString()); // 2021-07-30
Specifications
Specification |
---|
Temporal proposal # sec-get-temporal.plaindate.prototype.daysinmonth |
Browser compatibility
BCD tables only load in the browser
See also
Temporal.PlainDate
Temporal.PlainDate.prototype.with()
Temporal.PlainDate.prototype.add()
Temporal.PlainDate.prototype.subtract()
Temporal.PlainDate.prototype.year
Temporal.PlainDate.prototype.month
Temporal.PlainDate.prototype.day
Temporal.PlainDate.prototype.daysInWeek
Temporal.PlainDate.prototype.daysInYear