如何在 JavaScript 中克隆 Date 对象

要克隆 Date 对象:

  1. 使用 getTime() 方法获取自 Unix 纪元以来的毫秒数。
  2. 将结果传递给 Date() 构造函数。
  3. 例如,const dateClone = new Date(date.getTime())。
const date = new Date();
console.log(date);

const dateClone = new Date(date.getTime());

console.log(dateClone);

如何在 JavaScript 中克隆 Date 对象

我们可以点击上面的 运行示例 查看实际运行结果。

getTime 方法返回一个数字,该数字表示 1970 年 1 月 1 日午夜和给定日期之间经过的毫秒数。

console.log(new Date().getTime());

Date() 构造函数可以传递一个时间戳作为参数,并创建一个新的 Date 对象来存储指定的日期和时间。

在使用任何改变 Date 对象的方法之前,克隆 Date 是最佳实践,例如 set*

const date = new Date('2022-09-24T09:25:00');

// 👇️ Sap Sep 24 2022 09:25:00
console.log(date);

const dateClone = new Date(date.getTime());

// 👇️ Sap Sep 24 2022 09:25:00
console.log(dateClone);

dateClone.setHours(0, 0, 0, 0);

// 👇️ Sat Sep 24 2022 00:00:00
console.log(dateClone);

// 👇️ Sat Sep 24 2022 09:25:00 (didn't change original)
console.log(date);

我们使用 getTime() 方法获取日期的时间戳并将其传递给 Date() 构造函数以获取 Date 对象。

当我们必须使用某些 set* 方法但又不想改变原始日期时,通常会使用此方法。

在示例中,我们使用 setHours() 方法更改克隆日期的小时、分钟、秒和毫秒。

setHours() 方法(以及所有其他 set* 方法)更改给定日期的值,这并不总是我们想要的。

在使用该方法之前创建日期的克隆允许我们保留原始日期。