अगर दो अलग-अलग तारीख वस्तुओं में एक ही तारीख की जानकारी (एक ही दिन, महीने, वर्ष ...) हो, तो मैं कैसे जांच सकता हूं? मैंने "==", "===" और। असमान कोशिश की है, लेकिन कोई भी काम नहीं कर रहा है।
जवाबों:
a.setHours(0,0,0,0);
getTime()
मिलीसेकंड में समय लौटता है, इसलिए दोनों समय मिलिसेकंड का अंतर भी हो सकता है। इस समाधान में, यह अपेक्षा के अनुरूप काम नहीं करेगा। उपयोग करने का प्रयास करेंtoDateString()
यदि आप समय की परवाह किए बिना उसी दिन की तारीखों की जाँच करने में रुचि रखते हैं तो आप तुलना करने के लिए toDateString()
विधि का उपयोग कर सकते हैं । यह विधि बिना समय के केवल दिनांक लौटाती है:
var start = new Date('2015-01-28T10:00:00Z');
var end = new Date('2015-01-28T18:00:00Z');
if (start.toDateString() === end.toDateString()) {
// Same day - maybe different times
} else {
// Different day
}
मैंने इस कोड का उपयोग किया है:
Date.prototype.isSameDateAs = function(pDate) {
return (
this.getFullYear() === pDate.getFullYear() &&
this.getMonth() === pDate.getMonth() &&
this.getDate() === pDate.getDate()
);
}
तो आप बस इसे कॉल करें: if (aDate.isSameDateAs(otherDate)) { ... }
Hellnar,
आप कोशिश कर सकते हैं (फ़ंक्शन नाम को माफ़ कर दें :) - फ़ेलिक्स के मूल्य के अनुसार संशोधित किया गया, बजाय गेटटाइम के)
function isEqual(startDate, endDate) {
return endDate.valueOf() == startDate.valueOf();
}
उपयोग:
if(isEqual(date1, date2)){
// do something
}
हो सकता है कि आप वहां का हिस्सा पा लें।
यह सभी देखें:
'Http://www.java2s.com/Tutorial/JavaScript/0240__Date/DatevalueOf.htm'
बेहतर डेट सपोर्ट के लिए मोमेंट.जेएस और आईसम विधि का उपयोग करें
var starDate = moment('2018-03-06').startOf('day');
var endDate = moment('2018-04-06').startOf('day');
console.log(starDate.isSame(endDate)); // false ( month is different )
var starDate = moment('2018-03-06').startOf('day');
var endDate = moment('2018-03-06').startOf('day');
console.log(starDate.isSame(endDate)); // true ( year, month and day are the same )
उन्हें घटाएं और शून्य की तुलना करें:
var date1 = new Date();
var date2 = new Date();
// तारीखों के साथ कुछ करो ...
(date1 - date2) ? alert("not equal") : alert("equal");
इसे एक चर में डालने के लिए:
var datesAreSame = !(date1 - date2);
दो तिथियों के बराबर होने पर निर्धारित करने के लिए एक सरल सिंगल लाइन विकल्प, समय भाग की अनदेखी:
function isSameDate(a, b) {
return Math.abs(a - b) < (1000 * 3600 * 24) && a.getDay() === b.getDay();
}
यह निर्धारित करता है कि तारीखें और बी एक दिन से अधिक भिन्न नहीं हैं और सप्ताह के एक ही दिन साझा करें।
function isSameDate(a, b) {
return Math.abs(a - b) < (1000 * 3600 * 24) && a.getDay() === b.getDay();
}
console.log(isSameDate(new Date(2017, 7, 21), new Date(2017, 7, 21))); //exact same date => true
console.log(isSameDate(new Date(2017, 7, 21, 23, 59, 59), new Date(2017, 7, 21))); //furthest same dates => true
console.log(isSameDate(new Date(2017, 7, 20, 23, 59, 59), new Date(2017, 7, 21))); //nearest different dates => false
console.log(isSameDate(new Date(2016, 7, 21), new Date(2017, 7, 21))); //different year => false
console.log(isSameDate(new Date(2017, 8, 21), new Date(2017, 7, 21))); //different month => false
>=
मूल्यों के मामले में संख्याओं में परिवर्तित हो जाते हैं।==
वस्तुओं के मामले में खुद की तुलना की जाती है (और केवलa == a
सच होगा)।