2010-12-14 11 views
8

मैं देखा है: Get difference between 2 dates in javascript?जावास्क्रिप्ट तारीख अंतर

और मैं अभी भी इस काम करने के लिए नहीं मिल सकता है।

var difference = data.List[0].EndDate - Math.round(new Date().getTime()/1000.0) * 1000; 
var daysRemaining = Math.floor(difference/1000/60/60/24); 
var hoursRemaining = Math.floor(difference/1000/60/60 - (24 * daysRemaining)); 
var minutesRemaining = Math.floor(difference/1000/60 - (24 * 60 * daysRemaining) - (60 * hoursRemaining)); 
var secondsRemaining = Math.floor(difference/1000 - (24 * 60 * 60 * daysRemaining) - (60 * 60 * hoursRemaining) - (60 * minutesRemaining)); 

data.List [0] .EndDate एक यूटीसी संख्या है (जैसे: 1291427809310 (http://www.epochconverter.com/)) कि हमेशा बाद में आज की तारीख से किया जाएगा।

+0

आप आउटपुट के रूप में क्या उम्मीद कर रहे हैं? –

+0

सही घंटे, मिनट और सेकंड शेष रखने के लिए। – williamparry

+1

"मैं इसे काम नहीं कर सकता" का अर्थ वास्तव में क्या है? – epascarello

उत्तर

5

आप कहते हैं कि यूटीसी टाइमस्टैम्प "2004-09-16T23: 59: 58.75" है?

तो तुम मूल रूप से

var x = "2004-09-16T23:59:58.75" - 123456 

कर रहे हैं अब जब कि तुम ने स्पष्ट किया कि, की तुलना में ऊपर लागू नहीं होता। आप नई समस्या है कि मिलीसेकंड की संख्या अतीत में है, इसलिए जब आप अंतर गणना करते हैं, तो आपको ऋणात्मक संख्या मिल रही है। आप शायद ऑर्डर को स्वैप करना चाहते हैं।

var difference = new Date().getTime()-data.List[0].EndDate; 
+0

क्षमा करें मेरी बुरा, यह 12 9 1427809310 – williamparry

+0

जैसी संख्या है जो टिप्पणी में आपने जो कहा है उस पर आधारित नई जानकारी – epascarello

3

तो EndDate मिलीसेकेंड में है, और getTime() रिटर्न मिलीसेकेंड, क्यों आप इसे 1000 से विभाजित करते हैं केवल एक ही पंक्ति में 1000 से गुणा करने के लिए? और यदि आपको केवल शेष कोड के लिए दूसरी परिशुद्धता की आवश्यकता है, तो मिलीसेकंड में क्यों काम करें? सेकंड के एक नंबर के साथ शुरू अपने सभी गणना को आसान बनाने:

var difference = Math.round((data.List[0].EndDate - new Date().getTime())/1000); 
11
function days_between(date1, date2) { 

    // The number of milliseconds in one day 
    var ONE_DAY = 1000 * 60 * 60 * 24 

    // Convert both dates to milliseconds 
    var date1_ms = date1.getTime() 
    var date2_ms = date2.getTime() 

    // Calculate the difference in milliseconds 
    var difference_ms = Math.abs(date1_ms - date2_ms) 

    // Convert back to days and return 
    return Math.round(difference_ms/ONE_DAY) 

} 

http://www.mcfedries.com/javascript/daysbetween.asp

+6

यह उन मामलों का ख्याल नहीं रखता है जहां दिनांक 1 और दिनांक 2 अवधि एक दिन प्रकाश बचत परिवर्तन घटना। Http://stackoverflow.com/a/15289883/850996 –

+0

देखें कि किस प्रारूप में मुझे तिथि उत्तीर्ण करनी चाहिए? – nirav

0

मैंने लिखा एक component जो वास्तव में ऐसा करता है यदि आप पूर्ण लाइब्रेर का उपयोग नहीं करना चाहते हैं y पल.जेएस की तरह। यह किसी भी समय इकाई (दिन, सप्ताह, महीने, मिनट, घंटे, आदि) में अंतर को भी आउटपुट कर सकता है।

यहाँ यह कैसे काम करेगा:

var date1 = date.getTime(); 
var date2 = data.List[0].EndDate; 

var millisecondsRemaining = dateDiff(date1, date2, 'milliseconds'); 
var secondsRemaining = dateDiff(date1, date2, 'seconds'); 
var minutesRemaining = dateDiff(date1, date2, 'minutes'); 
var hoursRemaining = dateDiff(date1, date2, 'hours'); 
var daysRemaining = dateDiff(date1, date2, 'days'); 
var weeksRemaining = dateDiff(date1, date2, 'weeks'); 
var monthsRemaining = dateDiff(date1, date2, 'months'); 
var yearsRemaining = dateDiff(date1, date2, 'years'); 

DateDiff() विधि का उपयोग करने तुम सिर्फ घटक आयात कर सकते हैं।

संबंधित मुद्दे