2012-08-17 8 views
5

मुझे डेटडिफ़ फ़ंक्शन के साथ कोई समस्या है। मैं दो तिथियों/समय के बीच अंतर को समझने की कोशिश कर रहा हूं। मैंने इस पोस्टिंग को पढ़ा है (What's the best way to calculate date difference in Javascript) और मैंने इस ट्यूटोरियल को भी देखा (http://www.javascriptkit.com/javatutors/datedifference.shtml) लेकिन मुझे यह प्रतीत नहीं होता है।जावास्क्रिप्ट डेटडिफ

यहां मैंने सफलता के बिना काम करने की कोशिश की है। क्या कोई मुझे बता सकता है कि मैं क्या कर रहा हूं और मैं इसे कैसे सरल बना सकता हूं। कोडित थोड़ा सा लगता है ...?

//Set the two dates 
var currentTime = new Date(); 
var month = currentTime.getMonth() + 1; 
var day = currentTime.getDate(); 
var year = currentTime.getFullYear(); 
var currDate = month + "/" + day + "/" + year; 
var iniremDate = "8/10/2012"; 

//Show the dates subtracted 
document.write('DateDiff is: ' + currDate - iniremDate); 

//Try this function... 
function DateDiff(date1, date2) { 
    return date1.getTime() - date2.getTime(); 
} 

//Print the results of DateDiff 
document.write (DateDiff(iniremDate, currDate); 

उत्तर

5

आपकी पहली कोशिश पहले और फिर घटाव को जोड़ती है। आप वैसे भी तारों को घटा नहीं सकते हैं, जिससे NaN उत्पन्न होता है।

दूसरी कोशिश में कोई बंद नहीं है )। इसके अलावा, आप तारों पर getTime पर कॉल कर रहे हैं। आपको new Date(...).getTime() का उपयोग करने की आवश्यकता होगी। ध्यान दें कि तारीखों को घटाते समय आपको मिलीसेकंड में परिणाम मिलता है। आप इसे पूर्ण दिन/घंटे/आदि निकालकर प्रारूपित कर सकते हैं।

+0

जैसा कि आपने कहा था कि यह एक नकारात्मक मूल्य दिखाएगा। क्या यह सही है यह सही लगता है क्योंकि यह नकारात्मक मान दिखाता है। \t \t document.write (नई तिथि (iniremDate) - नई तारीख (currDate)); \t \t \t \t समारोह DateDiff (DATE1, DATE2) { \t \t वापसी date1.getTime() - date2.getTime(); \t \t} \t \t \t \t \t document.write (DateDiff (नई तारीख (iniremDate), नई तारीख (currDate))); –

+0

चूंकि 'iniremDate' अगस्त का 10 वां है और यह अभी 17 वां है, आपको स्पष्ट रूप से नकारात्मक मान मिलता है। यदि आप विपरीत को घटाना चाहते हैं, तो बस 'date2' से 'date1' घटाएं। – pimvdb

+0

वापसी मूल्य -604800000 है I इसे लेते हैं इसका मतलब है कि यह बहुत पहले सेकंड में पारित हो गया है? –

9

उन लोगों के लिए ठीक है जो यहां एक कामकाजी उदाहरण चाहते हैं, यह एक साधारण डेटडिफ पूर्व है जो दिन को एक नकारात्मक मूल्य (तिथि पहले से पारित) या सकारात्मक (तारीख आ रही है) में दिन के अनुसार अलग-अलग बताती है।

संपादित करें: मैंने इस स्क्रिप्ट को अपडेट किया है, इसलिए यह आपके लिए पैर का काम करेगा और परिणाम इस मामले में एक -10 में परिवर्तित करेगा जिसका मतलब है कि तिथि बीत चुकी है। CurrDate और iniPastedDate के लिए अपनी तिथियां इनपुट करें और आपको जाने के लिए अच्छा होना चाहिए !!

//Set the two dates 
var currentTime = new Date() 
var currDate  = currentTime.getMonth() + 1 + "/" + currentTime.getDate() + "/" + currentTime.getFullYear() //Todays Date - implement your own date here. 
var iniPastedDate = "8/7/2012" //PassedDate - Implement your own date here. 

//currDate = 8/17/12 and iniPastedDate = 8/7/12 

function DateDiff(date1, date2) { 
    var datediff = date1.getTime() - date2.getTime(); //store the getTime diff - or + 
    return (datediff/(24*60*60*1000)); //Convert values to -/+ days and return value  
} 

//Write out the returning value should be using this example equal -10 which means 
//it has passed by ten days. If its positive the date is coming +10.  
document.write (DateDiff(new Date(iniPastedDate),new Date(currDate))); //Print the results... 
+1

ध्यान दें कि यह काफी सीमित है - 'GetDay' सप्ताह के दिन लौटाता है, इसलिए मूल रूप से केवल तभी उपयोग योग्य होता है जब दोनों तिथियां एक ही सप्ताह में हों ('iniremDate =" 8/8/2012 "' वही परिणाम देगा)। – pimvdb

+0

@pimvdb क्या होगा यदि आप GetTime का उपयोग करते हैं तो क्या यह किसी भी तारीख के लिए काम करता है? –

+1

'getTime' वर्तमान सप्ताह या उसके जैसा कुछ नहीं है; यह प्रत्येक तारीख के लिए एक अद्वितीय संख्या देता है ताकि यह आपकी आवश्यकताओं के लिए विश्वसनीय हो। एकमात्र समस्या यह है कि आपको मिलीसेकंड अंतर को एक दिन के अंतर में बदलने की आवश्यकता होगी। – pimvdb

2
function setDateWeek(setDay){ 
    var d = new Date(); 
    d.setDate(d.getDate() - setDay); // <-- add this 
    var curr_date = d.getDate(); 
    var curr_month = d.getMonth() + 1; 
    var curr_year = d.getFullYear(); 
    return curr_date + "-" + curr_month + "-" + curr_year; 
} 


setDateWeek(1); 
0

कोई ज़रूरत नहीं JQuery या किसी अन्य तीसरे पक्ष के पुस्तकालय शामिल करने के लिए।

शीर्षक टैग में अपना इनपुट दिनांक प्रारूप निर्दिष्ट करें।

HTML:

< स्क्रिप्ट type = "text/javascript" src = "http://services.iperfect.net/js/IP_generalLib.js">

उपयोग जावास्क्रिप्ट समारोह:

IP_dateDiff (strDate1, strDate2, strDateFormat, डिबग [सही/गलत])

चेतावनी (IP_dateDiff ('11 -12-2014 ',' 2014/12/12 ',' डीडी-MM-YYYY ', गलत));

IP_dateDiff फ़ंक्शन दिनों की संख्या वापस कर देगा।

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