在 JavaScript 中从日期中减去月份
Subtract Months from a Date in JavaScript
从日期中减去月份:
- 使用该
getMonth()
方法获取特定日期月份的从零开始的值。 - 使用该
setMonth()
方法设置日期的月份。 - 该
setMonth
方法采用从零开始的月份数字并设置日期值。
索引.js
function subtractMonths(numOfMonths, date = new Date()) { date.setMonth(date.getMonth() - numOfMonths); return date; } // 👇️ Subtract 1 Month from current Date const result = subtractMonths(1); // 👇️ Subtract 2 months from another Date const date = new Date('2022-04-27'); // 👇️ Sun Feb 27 2022 console.log(subtractMonths(2, date));
我们创建了一个可重用的函数,它将月数和一个Date
对象作为参数并从日期中减去月份。
如果没有
Date
向函数提供对象,则它使用当前日期。getMonth
()
方法返回一个介于0
(January) 和11
(December) 之间的整数,表示给定日期中的月份。
请注意,该值是从零开始的,例如 January = 0、February = 1、March = 2 等。
setMonth
()
方法采用一个从零开始的值来表示一年中的月份(0 = 一月,1 = 二月,等等)并设置日期值。
如果从日期中减去 X 个月将我们推到上一年,则JavaScriptDate
对象会自动调整年份。
索引.js
const date = new Date('2022-01-27'); date.setMonth(date.getMonth() - 2); console.log(date); // 👉️ Sat Nov 27 2021
我们从 2022 年 1 月的日期中减去2
月份。结果显示年份自动回滚到2021
。
请注意,该
setMonth
方法Date
会就地改变对象。如果您不想Date
就地更改,请在调用该方法之前创建一个副本。索引.js
function subtractMonths(numOfMonths, date = new Date()) { const dateCopy = new Date(date.getTime()); dateCopy.setMonth(dateCopy.getMonth() - numOfMonths); return dateCopy; } // 👇️ Subtract 2 months from another Date const date = new Date('2022-03-27'); const result = subtractMonths(2, date); console.log(result); // 👉️ Thu Jan 27 2022 console.log(date); // 👉️ Sun Mar 27 2022 (didn't change original)
getTime方法返回从
1970 年 1 月 1 日 00:00:00 到给定日期之间经过的毫秒数。
我们使用时间戳来创建对象的副本,因此我们不会在调用方法
Date
时就地改变它。setMonth
Date
当您必须在代码的其他地方使用原始对象时,复制日期非常有用。
通常,改变函数参数是一种不好的做法,因为将相同的参数多次传递给相同的函数会产生不同的结果。