2013-10-07 7 views
37

मुझे दो दिनांक वस्तुएं मिलीं और मैं घंटों में अंतर की गणना करना चाहता हूं।दो तारीख वस्तुओं के बीच घंटों का अंतर कैसे प्राप्त करें?

यदि घंटों में अंतर 18 घंटे से कम है, तो मैं दिनांक वस्तु को सरणी में धक्का देना चाहता हूं।

जावास्क्रिप्ट/jQuery, वास्तव में कोई फर्क नहीं पड़ता; सबसे अच्छा क्या काम करता है।

+7

इस प्रश्न का उत्तर http://stackoverflow.com/questions/3224834/get-difference-between-2-dates-in-javascript में नहीं दिया गया था। ओपी विशेष रूप से कहता है: घंटे प्राप्त करें (दिन नहीं)। –

उत्तर

105

सबसे आसान तरीका तारीख वस्तुओं को एक दूसरे से सीधे घटाना होगा।

उदाहरण के लिए:

var hours = Math.abs(date1 - date2)/36e5; 

घटाव मिलीसेकेंड में दो तिथियों के बीच के अंतर को देता है। 36e560*60*1000 के लिए वैज्ञानिक संकेत है, जो विभाजित होता है जो मिलीसेकंद अंतर को घंटों में परिवर्तित करता है।

+22

मेरे अंदर इंजीनियर '36e5' के बजाय '3.6e6' ([सामान्यीकृत वैज्ञानिक नोटेशन] (http://en.wikipedia.org/wiki/Scientific_notation)) देखना पसंद करेंगे। पुस्तक पाठक, हालांकि, '360000' पसंद करेंगे। – Blazemonger

+8

प्रत्येक के लिए। – Boaz

+0

यह छोटा और कामकाजी कोड धन्यवाद Boaz –

3

टाइमस्टैम्प आपको मिल का उपयोग करें तिथि वस्तु पर valueOf फोन करके:

var diff = date2.valueOf() - date1.valueOf(); 
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours 
21

उपयोग करने का प्रयास getTime (mdn doc):

var diff = Math.abs(date1.getTime() - date2.getTime())/3600000; 
if (diff < 18) { /* do something */ } 

Math.abs() का उपयोग हम नहीं जानते कि जो तारीख में सबसे छोटी है । यह कोड शायद अधिक प्रासंगिक है:

var diff = (date1 - date2)/3600000; 
if (diff < 18) { array.push(date1); } 
संबंधित मुद्दे