如何在JavaScript中克隆一个Date对象

将Datevariables赋值给另一个将会把引用复制到SAME值。 这意味着改变一个会改变另一个。 我怎样才能克隆或复制的价值?

使用Date对象的getTime()方法,该方法返回自1970年1月1日00:00:00( 纪元时间 )以来的毫秒数:

 var date = new Date(); var copiedDate = new Date(date.getTime()); 

在Safari 4中,您还可以编写:

 var date = new Date(); var copiedDate = new Date(date); 

…但我不确定这是否适用于其他浏览器。 (这似乎在IE8中工作)。

这是最干净的方法

 var dat = new Date() var copyOf = new Date(dat.valueOf()) 

简化版本:

 Date.prototype.clone = function () { return new Date(this.getTime()); } 
 var orig = new Date(); var copy = new Date(+orig); 

我发现这个简单的任务也可以工作:

 dateOriginal = new Date(); cloneDate = new Date(dateOriginal); 

但是我不知道它是多么“安全”。 在IE7和Chrome 19上成功testing

如果你要添加克隆到date原型,那么你可能想要使它不可枚举…

 Date.prototype = Object.defineProperty(Date.prototype, "clone", { value: function (fromDate) { return new Date(fromDate.valueOf()); } }); 

你可以使用通用的方法:

  1. date

     var new_date = $.extend(new Date(), current_date); 
  2. 目的

     var new_object = $.extend({}, current_object); 

和别的…