2011-05-26 14 views
6

क्या यह जांचना संभव है कि अंतराल जावास्क्रिप्ट में प्रारंभ तिथि से अधिक या बराबर है या नहीं? मेरी तिथियां 'dd/mm/yyyy' प्रारूप में तार हैं।जावास्क्रिप्ट जांच समाप्ति तिथि प्रारंभ तिथि से अधिक या बराबर है

+1

आप जावास्क्रिप्ट दिनांक वस्तुओं के रूप में दिनांक पार्स और getTime() की तुलना करनी चाहिए - मूल्यों। – Alxandr

+1

यह ऐसी चीज है जो बहुत आसानी से गुगल हो जाती है, लाखों उत्तरों हैं। उपर्युक्त पोस्टर कहता है, दिनांक वस्तु का उपयोग करें। –

उत्तर

9

इस

var startDate = "05/01/2011"; 
var endDate = "09/01/2011"; 
var regExp = /(\d{1,2})\/(\d{1,2})\/(\d{2,4})/; 
if(parseInt(endDate.replace(regExp, "$3$2$1")) > parseInt(startDate.replace(regExp, "$3$2$1"))){ 
alert("greater"); 
} 
+0

+1 - अच्छा समाधान। यद्यपि आपके पास बेजोड़ संश्लेषण है। संपादित नहीं किया जा सका क्योंकि यह केवल 3 वर्ण परिवर्तन है। – detaylor

+0

+1 ग्रेट समाधान। मुझे लगता है कि यह एक अलग दिनांक प्रारूप के लिए प्रभावी नहीं होगा? –

+0

@Smirkin - धन्यवाद, मैंने इसे अभी सही कर दिया है :) – niksvp

0

जांच इस समारोह की कोशिश

function CompareDates() 
{ 
var str1 = document.getElementById("Fromdate").value; 
var str2 = document.getElementById("Todate").value; 
var dt1 = parseInt(str1.substring(0,2),10); 
var mon1 = parseInt(str1.substring(3,5),10); 
var yr1 = parseInt(str1.substring(6,10),10); 
var dt2 = parseInt(str2.substring(0,2),10); 
var mon2 = parseInt(str2.substring(3,5),10); 
var yr2 = parseInt(str2.substring(6,10),10); 
var date1 = new Date(yr1, mon1, dt1); 
var date2 = new Date(yr2, mon2, dt2); 

if(date2 < date1) 
{ 
    alert("To date cannot be greater than from date"); 
    return false; 
} 
else 
{ 
    alert("Submitting ..."); 
    document.form1.submit(); 
} 
} 
4

तो स्ट्रिंग प्रारूप ('dd/mm/yyyy') नहीं बदलता है, इस समारोह काम करना चाहिए:

function endAfterStart(start,end){ 
    return new Date(start.split('/').reverse().join('/')) < 
      new Date(end.split('/').reverse().join('/')); 
} 
alert(endAfterStart('05/01/2011','09/01/2011')); //=> true 

या Date.prototype का विस्तार करें:

Date.prototype.isBefore = Date.prototype.isBefore || function(dat){ 
    return this < dat; 
} 
new Date('05/01/2011'.split('/').reverse().join('/')) 
    .before(new Date('09/01/2011'.split('/').reverse().join('/'))); //=>true 
+0

+1 –

1

मुझे खोजने के लिए कुछ समय लगा, लेकिन JQuery DatePickerdate-range के साथ इस सटीक कार्यक्षमता को लागू करता है। (स्रोत कोड भी लिंक में उपलब्ध है।)

Moment.jsdiff फ़ंक्शन का उपयोग करके डेट तुलनाओं को बहुत अच्छी तरह से संभालता है।

0

इस प्रयास करें,

function isDateCompare(){ 

var leadDate = document.getElementById('strDate').value; 

var closeDate = document.getElementById('strDateClosed').value; 

var date1 = new Date(); 

date1.setFullYear(leadDate.substr(6,4),(leadDate.substr(3,2)-1),leadDate.substr(0,2)); 

var date2 = new Date(); 

date2.setFullYear(closeDate.substr(6,4),(closeDate.substr(3,2)-1),closeDate.substr(0,2)); 

if (date1> date2) 
{ 

alert("Expected Closed date cannot be less than Lead date."); 

return false; 

} 

else 
{ 

alert("true"); 

return false; 

} 

} 
1
function isDate(value) 
      { 
       var fromDate = document.getElementById("fromDate").value 
       var toDate= document.getElementById("toDate").value 
       //var curr_Date= new SimpleDateFormat("dd/mm/yyyy"); 


      var dateRegEx = null; 
      dateRegEx = new RegExp(/^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g); 

      if (dateRegEx.test(fromDate)){ 
      } 
      else{ 
       alert("Invalid from date"); 
       return false; 
      } 
      dateRegEx = new RegExp(/^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g); 
      if(dateRegEx.test(toDate)) { 
      } 
      else{ 
       alert("Invalid to date"); 
       return false; 
      } 
      var stDate = new Date(fromDate); 
      var enDate = new Date(toDate); 
      var compDate = enDate - stDate; 
      //var fdate=enDate-curr_Date; 

      if(compDate >= 0) 
       return true; 
      else 
      { 
       alert("To Date cannot be smaller than From Date"); 
       return false; 
      } 




      /**/ 
     } 

इस dd/mm/yyyy प्रारूप (नहीं किसी भी अन्य प्रारूप) also..in छलांग साल के लिए काम करेंगे।

0

सबसे पहले उपयोग इस समारोह js में दिनांक प्रकार के स्ट्रिंग में परिवर्तित कर देंगे:

function common_getDateFromUI(str) { 
    var arr = str.split("/"); 
    var returnDate = new Date(arr[2], arr[1] - 1, arr[0], 0, 0, 0, 0); 
    return returnDate; 
} 

दूसरा: आप जावास्क्रिप्ट दिनांक प्रकार प्राप्त करने के बाद, तो आप सिर्फ यह DATE1> DATE2 या DATE1 == DATE2 की तरह सामान्य प्रकार के रूप में की तुलना ।
या इस फ़ंक्शन का उपयोग तारीख के बीच अंतर की तारीख पाने के लिए:

function CalendarDays(startDate, endDate) { 
    if (endDate < startDate) 
     return 0; 

    // Calculate days between dates 
    var millisecondsPerDay = 86400 * 1000; // Day in milliseconds 
    startDate.setHours(0, 0, 0, 1); // Start just after midnight 
    endDate.setHours(23, 59, 59, 999); // End just before midnight 
    var diff = endDate - startDate; // Milliseconds between datetime objects 
    var days = Math.round(diff/millisecondsPerDay); 

    return days; 
} 

इस लिंक का पालन करें दिनांकों के बीच अंतर दिनों प्राप्त करने के लिए एक सरल डेमो है। Link demo here

0
if (iForm.DiddfromDate.value == "") 
    { 
    alert(" Please enter a value"); 
    iForm.DiddfromDate.focus(); 
    return false;  
    } 
    if (iForm.DiddtoDate.value == "") 
    { 
    alert(" Please enter a value"); 
    iForm.DiddtoDate.focus(); 
    return false;  
    }  
     try { 
      var d1 = iForm.DiddfromDate.value.substr(0, 2); 
      var m1 = iForm.DiddfromDate.value.substr(3, 2); 
      var y1 = iForm.DiddfromDate.value.substr(6, 4); 
      var StrDate = m1 + "/" + d1 + "/" + y1; 

      var d2 = iForm.DiddtoDate.value.substr(0, 2); 
      var m2 = iForm.DiddtoDate.value.substr(3, 2); 
      var y2 = iForm.DiddtoDate.value.substr(6, 4); 
      var EndDate = m2 + "/" + d2 + "/" + y2; 

      var startDate = new Date(StrDate); 
      var endDate = new Date(EndDate); 
      if (startDate > endDate) { 
       alert('To date should be greater than From date.'); 
       iForm.DiddfromDate.value = ''; 
       iForm.DiddtoDate.value = ''; 
       iForm.DiddfromDate.focus(); 
       return false; 
      } 
     } catch (e) { alert(e.Description); } 
return true; 
0

ऐसा करने का सबसे आसान तरीका।

function endAfterStart(start, end) { 
    var startDate = new Date(start); 
    var endDate = new Date(end); 

    return endDate.getTime() >= startDate.getTime(); 
} 
0

सिर्फ तिथि करने के लिए स्ट्रिंग को बदलने और यह तुलना करने के लिए दिनांक वस्तु के getTime विधि का उपयोग करें।

उदाहरण कोड

var startDate = '04/04/2015'; //date in dd/mm/yyyy format 
var endDate = '05/04/2015'; 

function compareDates(sDate, eDate) { 
    var dateTime1 = new Date(sDate).getTime(), 
     dateTime2 = new Date(eDate).getTime(); 
    var diff = dateTime2 - dateTime1; 
    if (diff > 0) { 
    alert("endDate is greater than startDate"); 
    return true; 
    } 
} 
compareDates(startDate, endDate); 

Working Fiddle

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