एक Date
दूसरे को एक चर सौंपते हुए एक ही उदाहरण के संदर्भ की नकल करेंगे। इसका मतलब है कि एक को बदलने से दूसरे में बदलाव आएगा।
मैं वास्तव में क्लोन या एक Date
उदाहरण की नकल कैसे कर सकता हूं ?
एक Date
दूसरे को एक चर सौंपते हुए एक ही उदाहरण के संदर्भ की नकल करेंगे। इसका मतलब है कि एक को बदलने से दूसरे में बदलाव आएगा।
मैं वास्तव में क्लोन या एक Date
उदाहरण की नकल कैसे कर सकता हूं ?
जवाबों:
का प्रयोग करें दिनांक वस्तु की getTime()
विधि है, जो 1 के बाद से मिलीसेकेंड की संख्या रिटर्न जनवरी 1970 00:00:00 ( युग समय ):
var date = new Date();
var copiedDate = new Date(date.getTime());
सफारी 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 + में काम करता है। फ़ायरफ़ॉक्स में दो विकल्प समान गति हैं।
new Date(date)
उसी के रूप में new Date(date.getTime())
, क्योंकि जेएस को कॉल करने की कोशिश की जाएगी date.valueOf()
जब उसे एक नंबर की आवश्यकता होगी, और date.valueOf()
उसी के रूप में है date.getTime()
, संदर्भ Date.valueOf Object.valueOf
new Date(date)
, उपयोग new Date(date.getTime()
या new Date(date.valueOf)
इसके बजाय न करें क्योंकि कम से कम फ़ायरफ़ॉक्स और IE (क्रोम नहीं) में तिथियों के बीच अंतर हो सकता है। उदाहरण के लिए 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);
+
किसी और लेकिन जेएस विशेषज्ञों के लिए क्या कर रहा है।
+
संकेत यहाँ अपर ऑपरेटर है। इसका मतलब है 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)
इसके बजाय न करें क्योंकि कम से कम फ़ायरफ़ॉक्स और IE (क्रोम नहीं) में तिथियों के बीच अंतर हो सकता है। उदाहरण के लिए toISOString()
फ़ायरफ़ॉक्स में दोनों तारीखों का उपयोग कर उत्पन्न करता है "2015-04-21T04:56:42.000Z"
और "2015-04-21T04:56:42.337Z"
।