Как клонировать объект Date? Присвоение переменной Date другой копирует ссылку на тот же экземпляр. Это означает, что изменение одного изменит другой. Как я могу на самом деле клонировать или скопировать экземпляр Date? Ответ 1 Используйте Date объект getTime() метод, который возвращает число миллисекунд с 1 января 1970 года 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). Ответ 2 Это самый чистый подход var dat = new Date() var copyOf = new Date(dat.valueOf()) Ответ 3 var orig = new Date(); var copy = new Date(+orig); Ответ 4 Упрощенная версия: Date.prototype.clone = function () { return new Date(this.getTime()); } Ответ 5 Я узнал, что это простое назначение также работает: dateOriginal = new Date(); cloneDate = new Date(dateOriginal); Но я не знаю, как это "безопасно". Успешно протестирован в IE7 и Chrome 19. Ответ 6 Если вы собираетесь добавить клон к прототипу Date, то вы можете сделать его неперечислимым... Date.prototype = Object.defineProperty(Date.prototype, "clone", { value: function (fromDate) { return new Date(fromDate.valueOf()); } }); Ответ 7 вы можете использовать универсальный метод: Дата var new_date = $.extend(new Date(), current_date); Объект var new_object = $.extend({}, current_object); и другие...
Ответ 1 Используйте Date объект getTime() метод, который возвращает число миллисекунд с 1 января 1970 года 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).
Ответ 5 Я узнал, что это простое назначение также работает: dateOriginal = new Date(); cloneDate = new Date(dateOriginal); Но я не знаю, как это "безопасно". Успешно протестирован в IE7 и Chrome 19.
Ответ 6 Если вы собираетесь добавить клон к прототипу Date, то вы можете сделать его неперечислимым... Date.prototype = Object.defineProperty(Date.prototype, "clone", { value: function (fromDate) { return new Date(fromDate.valueOf()); } });
Ответ 7 вы можете использовать универсальный метод: Дата var new_date = $.extend(new Date(), current_date); Объект var new_object = $.extend({}, current_object); и другие...