Date
변수를 다른 변수에 할당 하면 참조가 동일한 인스턴스에 복사됩니다. 이것은 하나를 변경하면 다른 하나가 변경됨을 의미합니다.
실제로 Date
인스턴스를 복제하거나 복사하려면 어떻게 해야합니까?
Date
변수를 다른 변수에 할당 하면 참조가 동일한 인스턴스에 복사됩니다. 이것은 하나를 변경하면 다른 하나가 변경됨을 의미합니다.
실제로 Date
인스턴스를 복제하거나 복사하려면 어떻게 해야합니까?
답변:
1970 년 1 월 1 일 00:00:00 ( epoch time ) 이후의 밀리 초 수를 반환 하는 Date 객체의 getTime()
메서드를 사용하십시오 .
var date = new Date();
var copiedDate = new Date(date.getTime());
Safari 4에서는 다음과 같이 쓸 수도 있습니다.
var date = new Date();
var copiedDate = new Date(date);
...하지만 다른 브라우저에서 작동하는지 확실하지 않습니다. (IE8에서 작동하는 것 같습니다).
Date.prototype.clone = function() { return new Date(this.getTime()); };
다음과 같이 사용할 수 있습니다.copiedDate = date.clone();
copiedDate = new Date(date)
접근법은 IE6 +에서 작동합니다. Firefox에서 두 옵션은 동일한 속도입니다.
new Date(date)
동일 new Date(date.getTime())
, JS 호출을 시도하기 때문에 date.valueOf()
이 번호를 필요로 할 때와 date.valueOf()
같은 동일 date.getTime()
참조 Date.valueOf Object.valueOf
new Date(date)
, 사용 new Date(date.getTime()
또는 new Date(date.valueOf)
대신 사용하지 마십시오 . 사용하여 예를 들어 toISOString()
파이어 폭스 생성에 날짜 모두 "2015-04-21T04:56:42.000Z"
와 "2015-04-21T04:56:42.337Z"
.
이것은 가장 깨끗한 접근법입니다
let dat = new Date()
let copyOf = new Date(dat.valueOf())
console.log(dat);
console.log(copyOf);
var orig = new Date();
var copy = new Date(+orig);
+
이 JS 전문가 이외의 사람에게 무엇을 하고 있는지 설명해야합니다 .
+
부호는 여기에 unaray 연산자입니다. 의미 new Date( Number(orig))
합니다. 자세한 내용은 여기를 참조하십시오 : developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
간체 버전 :
Date.prototype.clone = function () {
return new Date(this.getTime());
}
const cloneDate = d => new Date(d.getTime())
.
이 간단한 할당자가 작동한다는 것을 알았습니다.
dateOriginal = new Date();
cloneDate = new Date(dateOriginal);
그러나 나는 그것이 얼마나 "안전한지"모른다. IE7 및 Chrome 19에서 성공적으로 테스트되었습니다.
new Date(date)
, 사용 new Date(date.getTime()
또는 new Date(date.valueOf)
대신 사용하지 마십시오 . 사용하여 예를 들어 toISOString()
파이어 폭스 생성에 날짜 모두 "2015-04-21T04:56:42.000Z"
와 "2015-04-21T04:56:42.337Z"
.