Al asignar una variable de fecha a otra se copiará la referencia al MISMO valor. Esto significa que cambiar uno cambiará al otro. ¿Cómo puedo clonar o copiar el valor?Cómo clonar un objeto Date en JavaScript
Respuesta
el uso del método del objeto DategetTime()
, que devuelve el número de milisegundos desde 1 de enero 1970 00:00:00 (epoch time):
var date = new Date();
var copiedDate = new Date(date.getTime());
En Safari 4, también se puede escribir:
var date = new Date();
var copiedDate = new Date(date);
... pero no estoy seguro de si esto funciona en otros navegadores. (Parece que funciona en IE8).
Este es el método más limpio
var dat = new Date()
var copyOf = new Date(dat.valueOf())
el método para objetos "Fecha" "valueOf()" produce el mismo resultado que su método "getTime()" (el número de milisegundos desde el tiempo de época) –
@Steve:. cierto, pero getTime() podría "ve" al igual que solo devuelve el tiempo y no incluye la fecha, de ahí mi referencia a "más limpio." Francamente, el tipo de fecha en Javascript es un poco de zona de desastre, nunca debería haber sido mutable en primer lugar. – AnthonyWJones
@AnthonyWJones: derecha , Veo lo que quieres decir. –
puede utilizar un método universal:
Fecha
var new_date = $.extend(new Date(), current_date);
objeto
var new_object = $.extend({}, current_object);
y otros ...
¿Qué quieres decir con método universal? Lo siento, simplemente no lo entiendo. – Matthias
Jquery $ .extend() copia las propiedades de un objeto a otro, por lo que funciona como una especie de rutina genérica de copia superficial. Al menos creo que eso es lo que querían decir. –
Este método es útil. – dexiang
versión simplificada:
Date.prototype.clone = function() {
return new Date(this.getTime());
}
no te meterás con objetos incorporados – Pawel
No te meterás con objetos que no te pertenezcan. Debe hacer una copia nueva y llamarla SuperDate o algo así, dentro de su alcance. Muchos de los errores difíciles de probar se deben a la modificación inesperada de la funcionalidad del objeto. –
Esto funcionaría, pero por motivos de mantenimiento, este enfoque se consideraría como un olor a código. He escrito un enfoque que suelo usar en mi codificación: https://actuts.wordpress.com/2017/01/10/cloning-javascript-date-instances/ –
descubrí que este sencillo assignmnent también funciona:
dateOriginal = new Date();
cloneDate = new Date(dateOriginal);
Pero no sé cómo "seguro " es. Probado con éxito en IE7 y Chrome 19.
No use 'new Date (date)', use 'new Date (date.getTime()' or 'new Date (date.valueOf)' en su lugar, ya que la primera puede ocasionar diferencias entre las fechas, al menos, en Firefox y IE (no Chrome). Por ejemplo, usando 'toISOString()' en ambas fechas en Firefox genera '' 2015-04-21T04: 56: 42.000Z "' y '" 2015-04-21T04: 56: 42.337Z "' – crudh
var orig = new Date();
var copy = new Date(+orig);
Me gusta esta solución la mejor. – A1rPun
Muy precisa y limpia :) – robinmitra
Excepto que tendrás que explicar qué le está haciendo esa magia '+' a cualquiera excepto a los expertos de JS. –
Si vas a añadir clon Fecha prototipo, entonces puede que desee para que sea no numerable ...
Date.prototype = Object.defineProperty(Date.prototype, "clone", {
value: function (fromDate) { return new Date(fromDate.valueOf()); }
});
- 1. Exactamente clonar un objeto en javascript
- 2. AS3 - Clonar un objeto
- 3. ¿Cómo almacenar un objeto Date en SharedPreferences?
- 4. cómo clonar un objeto en Android?
- 5. Cómo clonar un objeto en Flex?
- 6. ¿Cómo "clonar" un objeto en un objeto de subclase?
- 7. Cómo clonar el objeto js?
- 8. ¿Cómo restar un mes del objeto Date?
- 9. ¿Cómo puedo clonar un objeto de diccionario?
- 10. ¿Cómo se puede clonar un objeto WPF?
- 11. ¿Cómo clonar un objeto generador de Python?
- 12. Cómo puedo clonar un objeto JAXB
- 13. ¿Cómo crear y clonar un objeto JSON?
- 14. ¿Qué significa clonar() un objeto?
- 15. ¿Cómo heredar de JavaScript Date Object?
- 16. ¿Cómo mostrar un objeto Date en un formato específico usando JavaScript?
- 17. ¿El objeto Date de JavaScript es susceptible al problema Y2038?
- 18. Cómo convertir una cadena en un objeto Date?
- 19. javascript date + 1
- 20. Conversión de un objeto Date a un objeto de calendario
- 21. entero Objeto Clonar Gráfico
- 22. javascript date to string
- 23. Usando Joda DateTime en el backend, ¿cómo convierto a un objeto Date de JavaScript?
- 24. ¿Cómo puedo clonar un objeto DateTime en C#?
- 25. Javascript Date Localización
- 26. día (s) de un objeto Date
- 27. javascript date resta
- 28. ¿Usando Parcel para clonar un objeto?
- 29. javascript date + 7 days
- 30. JavaScript new Date()
veces las personas también utilizan Serialización JSON y deserialización, pero este es mejor y mucho más rápido. +1 de mi parte –
JSON para este fragmento? Parece que estas personas deberían tener sus fundamentos claros ... Como confundir jQuery para DOM de JavaScript. – Boldewyn
Otra forma de escribir esta buena solución sería extender el prototipo de fecha: 'Date.prototype.clone = function() {return new Date (this.getTime()); }; ' Que podría usar como' copiedDate = date.clone(); ' – Ryan