在 JavaScript 中向日期添加小时数
Add Hours to a Date in JavaScript
在 JavaScript 中向日期添加小时数:
- 使用该
getTime()
方法获取自 Unix 纪元以来的毫秒数。 - 使用该
setTime()
方法,将调用结果getTime
加上转换为毫秒的小时数传递给它。
索引.js
function addHours(numOfHours, date = new Date()) { date.setTime(date.getTime() + numOfHours * 60 * 60 * 1000); return date; } // 👇️ Add 1 hour to current date const result = addHours(1); // 👇️ Add 2 hours to another date const date = new Date('2022-03-14T09:25:30.820'); // 👇️ Mon Mar 14 2022 11:25:30 console.log(addHours(2, date));
我们创建了一个可重用的函数,它接受小时数和一个Date
对象并将小时数添加到日期中。
Date
如果未提供对象,该函数将使用当前日期。getTime方法返回从
1970 年 1 月 1 日 00:00:00 到给定日期之间经过的毫秒数。
我们将小时数乘以,60 * 60 * 1000
因为我们需要在将值传递给
setTime
方法时将其转换为毫秒。
该setTime()
方法采用一个数字来表示自 1970 年 1 月 1 日以来的毫秒数,并将值设置为日期。
这种方法会自动处理添加 X 小时将我们推到第二天、一个月或一年的场景。
索引.js
const date = new Date('2022-03-14T23:25:30.820'); const numOfHours = 10; date.setTime(date.getTime() + numOfHours * 60 * 60 * 1000); // 👇️ Tue Mar 15 2022 09:25:30 console.log(date);
向日期添加10
小时数成功地将月份中的某天更改为
15th
.
该
setTime
方法改变了Date
它被调用的对象。如果您不想Date
就地更改,请在调用该方法之前创建一个副本。索引.js
function addHours(numOfHours, date = new Date()) { const dateCopy = new Date(date.getTime()); dateCopy.setTime(dateCopy.getTime() + numOfHours * 60 * 60 * 1000); return dateCopy; } // 👇️ Add 2 hours to another date const date = new Date('2022-03-14T09:25:30.820'); const result = addHours(2, date); console.log(result); // 👉️ Mon Mar 14 2022 11:25:30 console.log(date); // 👉️ Mon Mar 14 2022 09:25:30 (didn't change original)
我们使用该getTime
方法获取从 1970 年 1 月 1 日 00:00:00 到给定日期之间经过的毫秒数。
我们将时间戳传递给
Date()
构造函数以创建对象的副本,因此我们不会在调用方法Date
时就地改变它。setTime
Date
当您必须在代码的其他地方使用原始对象时,复制日期非常有用。
一般来说,改变函数参数是一种不好的做法,因为将相同的参数多次传递给同一个函数会返回不同的结果。