試一試
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 |
瀏覽器相容性
載入中…