试一试
const event = new Date("August 19, 1975 23:15:30");
event.setMonth(3);
console.log(event.getMonth());
// Expected output: 3
console.log(event);
// Expected output: "Sat Apr 19 1975 23:15:30 GMT+0100 (CET)"
// Note: your timezone may vary
语法
js
setMonth(monthValue)
setMonth(monthValue, dateValue)
参数
monthValue-
一个整数,表示月份:0 表示一月,1 表示二月,以此类推。
dateValue可选-
一个从 1 到 31 的整数,表示月份中的日期。
返回值
该方法会直接修改 Date 对象,并返回其新的 时间戳。如果某个参数是 NaN(或被 强制转换 为 NaN 的值,如 undefined),则日期将设置为 无效日期,并返回 NaN。
描述
如果您未指定 dateValue 参数,则将使用 getDate() 返回的相同值。
如果您指定的参数超出预期范围,其他参数和 Date 对象中的日期信息将相应更新。例如,如果您为 monthValue 指定 15,年份将增加 1,月份将使用 3。
月份的当前日期会影响此方法的行为。概念上,它会将当前月份日期数添加到参数中指定的新月份的第 1 天,以返回新日期。例如,如果当前值为 2016 年 1 月 31 日,调用 setMonth 并传入值 1 将返回 2016 年 3 月 2 日。这是因为 2016 年 2 月有 29 天。
由于 setMonth() 在本地时间操作,因此跨越夏令时 (DST) 边界可能会导致经过时间与预期不同。例如,如果设置月份跨越了春季前移(失去一小时)的转换,新旧日期之间的时戳差异将比名义上的天数差乘以 24 小时少一个小时。反之,跨越秋季后移(增加一小时)的转换将导致额外一小时。如果您需要按固定时间量调整日期,请考虑使用 setUTCMonth() 或 setTime()。
如果新的本地时间落在偏移量转换范围内,则确切时间将使用与 Temporal 的 disambiguation: "compatible" 选项相同的行为来确定。也就是说,如果本地时间对应两个瞬间,则选择较早的那个;如果本地时间不存在(存在间隙),则向前推进间隙持续的时间。
示例
使用 setMonth()
js
const theBigDay = new Date();
theBigDay.setMonth(6);
// Watch out for end of month transitions
const endOfMonth = new Date(2016, 7, 31);
endOfMonth.setMonth(1);
console.log(endOfMonth); // Wed Mar 02 2016 00:00:00
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-date.prototype.setmonth |
浏览器兼容性
加载中…