दिलचस्प पोस्ट
रूट स्तर पर डेटा अमान्य है रेखा 1, स्थिति 1- एक XML फ़ाइल लोड करते समय मुझे यह त्रुटि क्यों मिलती है? खाली मैक्रो परिभाषाएं सी में अनुमत हैं? वे कैसे व्यवहार करते हैं? एंड्रॉइड पर सर्वर से पाठ फ़ाइल पढ़ना जेडीबीसी एमएसएसक्यूएल से रिटर्न वैल्यू प्राप्त करना एक्सेस एक्सचेंज ई-मेल में सी # स्काला करी बनाम आंशिक रूप से कार्यान्वित कार्य PHP: आप प्रत्येक एनटवेशन की लूप कैसे तय करते हैं? IPhone / iPad परियोजना पर FFMPEG एकीकरण सी # में अनाम प्रतिनिधियों को सीरियल करना जेक्जरी की जांच करें कि व्यूपोर्ट में तत्व दृश्यमान है आईआईएस, नोड। जेएस और आईआईएसएनोड के साथ वेब अनुप्रयोग वर्चुअल निर्देशिका के साथ ठीक से कॉन्फ़िगर नहीं किया गया है D3.js में एकाधिक पंक्तियां ड्राइंग एक ही टीएलएस सत्र का उपयोग करके डेटा कनेक्शन के साथ एफटीपीएस सर्वर से कैसे जुड़ें? नीग्रै सरणियों के स्वैप स्लाइस मैं कैसे ठीक कर सकता हूं "प्रकार सूची की अभिव्यक्ति को अनियंत्रित रूपांतरण की आवश्यकता है … '?

दो तिथियों के बीच दिन का अंतर ढूंढें (सप्ताहांत के दिनों को छोड़कर)

नमस्ते मैं दिनांक और दिनांक.जेस का चयन करने के लिए 2-तारीखों के बीच अंतर जानने के लिए jquery-ui datepicker का उपयोग कर रहा हूँ।

अभी समस्या यह है कि मैं शनिवार और रविवार को गणना से सप्ताहांत दिनों को बाहर करना चाहता हूं। मैं कैसे करूं?

उदाहरण के लिए उपयोगकर्ता का चयन आरंभ दिनांक (13/8/2010) और समाप्ति तिथि (16/8/2010)। 14/8/2010 और 15/8/2010 के बाद से सप्ताह के दिनों में, कुल 4 दिन के बजाय, मैं चाहता हूं कि यह केवल 2 दिन हो।

यह कोड अभी उपयोग कर रहा है I

<script type="text/javascript"> $("#startdate, #enddate").change(function() { var d1 = $("#startdate").val(); var d2 = $("#enddate").val(); var minutes = 1000*60; var hours = minutes*60; var day = hours*24; var startdate1 = getDateFromFormat(d1, "dmy"); var enddate1 = getDateFromFormat(d2, "dmy"); var days = 1 + Math.round((enddate1 - startdate1)/day); if(days>0) { $("#noofdays").val(days);} else { $("#noofdays").val(0);} }); </script> 

Solutions Collecting From Web of "दो तिथियों के बीच दिन का अंतर ढूंढें (सप्ताहांत के दिनों को छोड़कर)"

हो सकता है कि कोई और इस फ़ंक्शन को JQuery के रूपरेखा में बदलने में आपकी मदद कर सकता है …

कच्चे जावास्क्रिप्ट में मैं इसका उपयोग करेगा:

लाइव डेमो

 <script> function calcBusinessDays(dDate1, dDate2) { // input given as Date objects var iWeeks, iDateDiff, iAdjust = 0; if (dDate2 < dDate1) return -1; // error code if dates transposed var iWeekday1 = dDate1.getDay(); // day of week var iWeekday2 = dDate2.getDay(); iWeekday1 = (iWeekday1 == 0) ? 7 : iWeekday1; // change Sunday from 0 to 7 iWeekday2 = (iWeekday2 == 0) ? 7 : iWeekday2; if ((iWeekday1 > 5) && (iWeekday2 > 5)) iAdjust = 1; // adjustment if both days on weekend iWeekday1 = (iWeekday1 > 5) ? 5 : iWeekday1; // only count weekdays iWeekday2 = (iWeekday2 > 5) ? 5 : iWeekday2; // calculate differnece in weeks (1000mS * 60sec * 60min * 24hrs * 7 days = 604800000) iWeeks = Math.floor((dDate2.getTime() - dDate1.getTime()) / 604800000) if (iWeekday1 <= iWeekday2) { iDateDiff = (iWeeks * 5) + (iWeekday2 - iWeekday1) } else { iDateDiff = ((iWeeks + 1) * 5) - (iWeekday1 - iWeekday2) } iDateDiff -= iAdjust // take into account both days on weekend return (iDateDiff + 1); // add 1 because dates are inclusive } </script> 

यहां पाया

और उस समारोह को कॉल करने के लिए, उदाहरण के लिए, जैसे कुछ:

  <script> alert(calcBusinessDays(new Date("August 11, 2010 11:13:00"),new Date("August 16, 2010 11:13:00"))); </script> 

## संपादित करें #

यदि आप इसे अपने प्रारूप से उपयोग करना चाहते हैं तो:

आपका कोड ऐसा दिखेगा:

 <script type="text/javascript"> $("#startdate, #enddate").change(function() { var d1 = $("#startdate").val(); var d2 = $("#enddate").val(); var minutes = 1000*60; var hours = minutes*60; var day = hours*24; var startdate1 = getDateFromFormat(d1, "dmy"); var enddate1 = getDateFromFormat(d2, "dmy"); var newstartdate=new Date(); newstartdate.setFullYear(startdate1.getYear(),startdate1.getMonth(),startdate1.getDay()); var newenddate=new Date(); newenddate.setFullYear(enddate1.getYear(),enddate1.getMonth(),enddate1.getDay()); var days = calcBusinessDays(newstartdate,newenddate); if(days>0) { $("#noofdays").val(days);} else { $("#noofdays").val(0);} }); </script> 

ऐसा मैं कैसे कर सकता हूं

 function getDays(d1, d2) { var one_day=1000*60*60*24; var d1_days = parseInt(d1.getTime()/one_day) - 1; var d2_days = parseInt(d2.getTime()/one_day); var days = (d2_days - d1_days); var weeks = (d2_days - d1_days) / 7; var day1 = d1.getDay(); var day2 = d2.getDay(); if (day1 == 0) { days--; } else if (day1 == 6) { days-=2; } if (day2 == 0) { days-=2; } else if (day2 == 6) { days--; } days -= parseInt(weeks) * 2; alert(days); } getDays(new Date("June 8, 2004"),new Date("February 6, 2010")); 

संपादित करें
@ केइनेबेक पर मेरी टिप्पणी को स्पष्ट करने के लिए …
यह समाधान छोटे तिथि अंतर के लिए काफी अच्छी तरह से काम करेगा और समझने में आसान है। लेकिन 6 साल की अवधि के रूप में "संक्षिप्त" के रूप में कुछ ले लो और आप गति में उल्लेखनीय अंतर देख सकते हैं

http://jsfiddle.net/aSvxv/

मैंने सभी 3 उत्तरों शामिल किए हैं और मूल उत्तर वास्तव में सबसे तेज है, लेकिन बहुत कुछ नहीं और निष्पादन के कुछ माइक्रोसॉन्ड्स के लिए ट्रेड ऑफ पठनीयता के पक्ष में मेरे लिए कुछ क्षुद्र है।

ऐसा करने के लिए, आपको इन तिथियों के बीच पूरे दिन खोज नहीं करना चाहिए!

यह जटिल नहीं है, कुछ स्पष्ट धारणाएं देखें:

  1. सभी पूर्ण सप्ताह में 7 दिन हैं

  2. कौन सा सप्ताहांत-दिन हैं

  3. और जो 5 कार्यदिवस हैं

स्पष्ट निष्कर्ष:

  1. सभी समय देखो समय की हानि है।

  2. जांचें कि सप्ताह में सप्ताहांत कितना दिन है, समय की कमी है


थकाऊ स्पष्टीकरण के बिना .. मुझे कोड दिखाएं:

 function getBusinessDateCount (startDate, endDate) { var elapsed, daysBeforeFirstSaturday, daysAfterLastSunday; var ifThen = function (a, b, c) { return a == b ? c : a; }; elapsed = endDate - startDate; elapsed /= 86400000; daysBeforeFirstSunday = (7 - startDate.getDay()) % 7; daysAfterLastSunday = endDate.getDay(); elapsed -= (daysBeforeFirstSunday + daysAfterLastSunday); elapsed = (elapsed / 7) * 5; elapsed += ifThen(daysBeforeFirstSunday - 1, -1, 0) + ifThen(daysAfterLastSunday, 6, 5); return Math.ceil(elapsed); } var date1 = new Date(1999, 12, 31); var date2 = new Date(); // now print( getBusinessDateCount(date1, date2) ); 

आप किसी भी तारीखों के साथ खुद का परीक्षण कर सकते हैं

मैं सिर्फ यह नोटिस करना चाहता हूं कि यह कोड 2000 से 2015 की तारीखों के बीच केवल 0.43 सेकंड का सेवन करता है … यह कुछ अन्य कोडों की तुलना में बहुत तेज है

आशा करता हूँ की ये काम करेगा…

अच्छा कोडिंग !!

 Date.prototype.addDays = function(days) { var date = new Date(this.valueOf()) date.setDate(date.getDate() + days); return date; } function getBusinessDatesCount(startDate, endDate) { var count = 0; var curDate = startDate; while (curDate <= endDate) { var dayOfWeek = curDate.getDay(); var isWeekend = (dayOfWeek == 6) || (dayOfWeek == 0); if(!isWeekend) count++; curDate = curDate.addDays(1); } return count; } //Usage var startDate = new Date('7/16/2015'); var endDate = new Date('7/20/2015'); var numOfDays = getBusinessDatesCount(startDate,endDate); jQuery('div#result').text(numOfDays); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="result"/> 

यह मेरे लिए बहुत काम जैसा दिखता है मैं कंप्यूटर को भारी भार उठाना चाहता हूं- //

 Date.bizdays= function(d1, d2){ var bd= 0, dd, incr=d1.getDate(); while(d1<d2){ d1.setDate(++incr); dd= d1.getDay(); if(dd%6)++bd; } return bd; } //test var day1= new Date(2010, 7, 11), day2= new Date(2010, 7, 31); alert(Date.bizdays(day1, day2)) 

मैं इसे इस कोड के साथ काम करता हूं। नोट करें कि फ़ंक्शन date.js और businessday js से है (गार्स सूरो के लिए धन्यवाद)। प्रारंभ दिनांक 11-08-2010 समाप्ति तिथि 16-08-2010 को 4 दिनों की छुट्टी का परिणाम होगा।

 <script type="text/javascript"> $("#startdate, #enddate").change(function() { var d1 = $("#startdate").val(); var d2 = $("#enddate").val(); var minutes = 1000*60; var hours = minutes*60; var day = hours*24; var startdate1 = getDateFromFormat(d1, "dmy"); var enddate1 = getDateFromFormat(d2, "dmy"); var days = calcBusinessDays(new Date(startdate1),new Date(enddate1)); if(days>0) { $("#noofdays").val(days);} else { $("#noofdays").val(0);} }); </script> 

मैंने क्या किया

 function calcbusinessdays() { for(var c=0,e=0,d=new Date($("#startdate").val()),a=(new Date($("#enddate").val())-d)/864E5;0<=a;a--) { var b=new Date(d); b.setDate(b.getDate()+a); 1==Math.ceil(b.getDay()%6/6)?c++:e++ } $("#noofdays").html(c) }; 

c सप्ताहवार है, e सप्ताहांत है

रास्ता समझने के लिए।


  1. वास्तविक दिन = 14
  2. वास्तविक दिनों के लिए सप्ताह = 14/7 = 2
  3. सप्ताहांत प्रति सप्ताह = 2
  4. कुल सप्ताहांत = 2 * सप्ताह के लिए सप्ताह

इसलिए इसे लागू करें,

  $('#EndDate').on('change', function () { var start = $('#StartDate').datepicker('getDate'); var end = $('#EndDate').datepicker('getDate'); if (start < end) { var days = (end - start) / 1000 / 60 / 60 / 24; var Weeks=Math.round(days)/7; var totalWeekends=Math.round(Weeks)*2; var puredays=Math.round(days)-totalWeekends; $('#days').text(Math.round(puredays) + "Working Days"); } else { alert(""); } 

धन्यवाद !

 function addDays(date, days) { var result = new Date(date); result.setDate(result.getDate() + days); return result; } var currentDate; selectFlixbleDates = []; var monToSatDateFilter=[]; currentDate=new Date(date); while(currentDate){ console.log("currentDate"+currentDate); if(new Date(currentDate).getDay()!=0){ selectFlixbleDates.push(currentDate) } if(selectFlixbleDates.length==$scope.numberOfDatePick) { break; } currentDate=addDays(currentDate,1); } for (var i = 0; i < selectFlixbleDates.length; i++) { // console.log(between[i]); monToSatDateFilter.push((selectFlixbleDates[i].getMonth() + 1) + '/' + selectFlixbleDates[i].getDate() + '/' + selectFlixbleDates[i].getFullYear()); } var endDate=monToSatDateFilter.slice(-1).pop(); var space =monToSatDateFilter.join(', '); var sdfs= document.getElementById("maxPicks").value =space; $scope.$apply(function() { $scope.orderEndDate=monToSatDateFilter.slice(-1).pop() $scope.orderStartDate=monToSatDateFilter[0]; }); document.getElementById("startDateEndDate").innerHTML =$scope.orderStartDate+ ' TO ' +$scope.orderEndDate }