将一个Date变量赋给另一个变量会将引用复制到同一个示例。这意味着更改一个变量会更改另一个变量。我实际上如何克隆或复制Date示例?
Date
ilmyapht1#
使用Date对象的getTime()方法,该方法返回自1970年1月1日00:00:00 UTC(epoch time)以来的毫秒数:
getTime()
var date = new Date(); var copiedDate = new Date(date.getTime());
在Safari 4中,您还可以编写:
var date = new Date(); var copiedDate = new Date(date);
......但我不确定这是否适用于其他浏览器。(似乎适用于IE8)。
qvk1mo1f2#
这是最干净的方法
let date = new Date() let copyOfDate = new Date(date.valueOf()) console.log(date); console.log(copyOfDate);
ltqd579y3#
克隆Date对象的概念听起来比实际要宏伟,据我所知,只有一个示例数据,那就是存储的时间,我们真正要做的是用相同的时间创建一个新对象。无论过去的情况如何,new Date()构造函数都明确地接受Date对象作为单个参数:
new Date()
const date = new Date(); // With or without an argument. const date2 = new Date(date); // Clone original date.
www.example.com上的Specificationhttps://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date在步骤4(B)中指出Date对象是绝对可以接受的,并且它等价于new Date(date.valueOf()),正如我所说的,您实际上所做的只是创建一个新的Date对象,使其与另一个对象具有相同的时间。您还将发现https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date上的文档已更新以包含此内容。
new Date(date.valueOf())
gz5pxeao4#
var orig = new Date(); var copy = new Date(+orig); console.log(orig, copy);
wkyowqbh5#
简化版:
Date.prototype.clone = function () { return new Date(this.getTime()); }
n3schb8v6#
我发现这个简单的任务也有效:
dateOriginal = new Date(); cloneDate = new Date(dateOriginal);
但不知有多“安全”,在IE7和Chrome 19中测试成功。
ajsxfq5m7#
function cloneMyDate(oldDate){ var newDate = new Date(this.oldDate); }
我将oldDate传递给函数,并从这个.oldDate生成newDate,但它也更改了这个.oldDate,所以我使用了上面的解决方案,它工作了。
dy2hfwbg8#
对于chrome,它的工作原理是://2022年11月3日星期四11:43:00
const date2 =新日期(日期);**现在更改date2不会对日期产生影响
8条答案
按热度按时间ilmyapht1#
使用Date对象的
getTime()
方法,该方法返回自1970年1月1日00:00:00 UTC(epoch time)以来的毫秒数:在Safari 4中,您还可以编写:
......但我不确定这是否适用于其他浏览器。(似乎适用于IE8)。
qvk1mo1f2#
这是最干净的方法
ltqd579y3#
2021年更新
克隆
Date
对象的概念听起来比实际要宏伟,据我所知,只有一个示例数据,那就是存储的时间,我们真正要做的是用相同的时间创建一个新对象。无论过去的情况如何,
new Date()
构造函数都明确地接受Date
对象作为单个参数:www.example.com上的Specificationhttps://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date在步骤4(B)中指出
Date
对象是绝对可以接受的,并且它等价于new Date(date.valueOf())
,正如我所说的,您实际上所做的只是创建一个新的Date
对象,使其与另一个对象具有相同的时间。您还将发现https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date上的文档已更新以包含此内容。
gz5pxeao4#
wkyowqbh5#
简化版:
n3schb8v6#
我发现这个简单的任务也有效:
但不知有多“安全”,在IE7和Chrome 19中测试成功。
ajsxfq5m7#
我将oldDate传递给函数,并从这个.oldDate生成newDate,但它也更改了这个.oldDate,所以我使用了上面的解决方案,它工作了。
dy2hfwbg8#
对于chrome,它的工作原理是:
//2022年11月3日星期四11:43:00
const date2 =新日期(日期);**
现在更改date2不会对日期产生影响