2012-10-30 11 views
9

वहाँ एक महीने के लिए या एक वर्ष के सभी दिनों के लिए एक तरीका है? मैं डेटपिकर में कुछ विशिष्ट दिनों को अक्षम करने के लिए इसकी तलाश कर रहा हूं, मेरे पास अक्षम होने के लिए इन दिनों का चयन करने के लिए बैक ऑफिस में एक पृष्ठ होगा।डेट ऑब्जेक्ट के साथ महीने में सभी दिन खोजें?

तो मैं एक महीने में सभी दिन दिखाने के लिए, और प्रत्येक दिन के नीचे एक "को सक्रिय या अक्रिय" बटन जोड़ने के लिए की आवश्यकता होगी। क्या डेट ऑब्जेक्ट के साथ इन दिनों खोजने का कोई तरीका है? मुझे उदाहरण के लिए यह लिंक मिला: Displaying all the days of a month लेकिन मुझे वास्तव में यह समझ में नहीं आता है, साथ ही यह जावा है, मैं जावास्क्रिप्ट में समाधान ढूंढने की कोशिश कर रहा हूं।

आपकी मदद

+0

"इन दिनों को ढूंढें" या "इन दिनों क्या हैं" वास्तव में क्या मतलब है? उद्देश्य स्पष्ट नहीं है – charlietfl

उत्तर

37

एक महीने में सभी दिनों की एक सूची प्राप्त करने के लिए, आप एक महीने के पहले दिन Date से शुरू कर सकते हैं, महीने के महीने तक दिन तक बढ़ सकते हैं।

/** 
* @param {int} The month number, 0 based 
* @param {int} The year, not zero based, required to account for leap years 
* @return {Date[]} List with date objects for each day of the month 
*/ 
function getDaysInMonth(month, year) { 
    var date = new Date(year, month, 1); 
    var days = []; 
    while (date.getMonth() === month) { 
     days.push(new Date(date)); 
     date.setDate(date.getDate() + 1); 
    } 
    return days; 
} 

उदाहरण http://jsfiddle.net/kKj8h/1/

+0

बहुत बहुत जुआन धन्यवाद, यह वही है जो मुझे चाहिए! बहुत बहुत धन्यवाद – Paul

+0

कोड दिनांक .setDate (date.getDate() + 1) में मामूली सुधार; तारीख से पहले जाना चाहिए। पुश सरणी कॉल – Timothy

+0

@ टिमोथी टेस्ट केस क्या है कि यह काम नहीं करता है? –

0

एक datepicker में दिनांक को अक्षम करने के लिए धन्यवाद, आप इस सवाल का जवाब यहाँ वर्णित कर सकते हैं का उपयोग करें:
https://stackoverflow.com/a/12061715/48082

कई तिथियों (आतंरिक कार्यालय अनुप्रयोग में के रूप में) का चयन करने के लिए आप अपने विवरण से
http://multidatespickr.sourceforge.net/

+0

धन्यवाद आपके उत्तर के लिए चेसो – Paul

4

मुझे यकीन है कि नहीं कर रहा हूँ अगर मानक अक्षम दिनांकों datepicker आप के साथ काम करेंगे, इसलिए मैं आपको सीधे सवाल जवाब देंगे: इस प्लगइन का उपयोग कर सकते हैं।

आप ऐसा करने से एक महीने के लिए दिनों की एक सरणी काफी आसानी से निर्माण कर सकते हैं:

var numOfDays = new Date(2012, 10, 0).getDate(); //use 0 here and the actual month 
var days = new Array(); 

//This will construct an array with all the elements represent the day of the week 
//(i.e. Oct 30th would be days[30-1] or days[29]) and the value would be the actual 
//day of the week (i.e. Tuesday which is representing by the number 2) 
for(var i=0;i<=numOfDays;i++) 
{ 
    days[i] = new Date(2012,9,i+1).getDay(); //use month-1 here    
} 
//This will give you a number from 0 - 6 which represents (Sunday - Saturday) 
alert(days[29]); 

दिन आप काफी कर सकते हैं जो कुछ भी आप इसके साथ चाहते हैं कि सरणी का उपयोग करना और के दिन पता सप्ताह भी।

+0

धन्यवाद आपके उत्तर के लिए जेरेमी! – Paul

1

यहाँ एक loopp कि कि महीने के अंतिम दिन निर्धारित करने के लिए प्रत्येक माह के माध्यम से चलाता है है। जावास्क्रिप्ट दिनांक ऑब्जेक्ट इंडेक्स महीने शून्य से शुरू होते हैं और यदि आप दिन को शून्य पर सेट करते हैं तो यह पिछले महीने के अंतिम दिन वापस आ जाता है। फ़रवरी

Date(2012, 12, 0) के लिए लीप वर्ष के अंतिम दिन का निर्धारण 31 दिसंबर, लौट जाएगा 2012

Date (2012,0,0) दिसंबर 31,2011

और सभी महत्वपूर्ण एक वापस आ जाएगी यह पता लगाने की लिए सुविधाजनक

के साथ फरवरी है Date (2012,3,0) इस साल लीप वर्ष के बाद से रिटर्न 29 फ़र,

var mos=['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'] 

for (i = 0; i < 12; i++) { 
    var lastDate = new Date(2012, i+1, 0); 
    $('body').append('Last day of ' + mos[i] + ' is ' + lastDate.getDate()+'<br>') 
} 

डेमो: +०१२३६०२१७८

+0

धन्यवाद आपके उत्तर के लिए charlietfl! – Paul

1

मैं कार्यक्षमता आप एक jQuery datepicker का उपयोग कर अनुरोध किया लागू किया है।

सबसे पहले, दो कार्यों

$("#datepicker").datepicker({ 

    // only enable date if dateEnabled returns [true] 
    beforeShowDay: dateEnabled, 

    // once a date has been selected call dateSelected 
    onSelect: dateSelected 
}); 

यहाँ के साथ datepicker

// format yyyy-mm-dd 
var disabledDates = [ 
    "2012-10-01", 
    "2012-10-02", 
    "2012-10-30", 
    "2012-09-12" 
]; 

दूसरा एक सरणी में सभी बैक ऑफिस में चयनित अक्षम होने दिनांकों जोड़ने के लिए, निर्दिष्ट आवश्यक की परिभाषा है फ़ंक्शंस

function dateEnabled(d) { 

    // if date found in array disable date 
    if(disabledDates.indexOf(getDate(d)) > -1) { 

     return [false]; 

    } else { 

     return [true] ; 

    } 
} 

तिथियों की तुलना के लिए स्ट्रिंग करने की तारीख को कनवर्ट करें सरणी

function getDate(d) { 
    var day, 
     month, 
     year; 

    day = d.getDate(); 
    month = d.getMonth() + 1; // add 1 as getMonth returns 0 - 11 
    year = d.getFullYear(); 

    if(month < 10) month = "0" + month; 
    if(day < 10) day = "0" + day; 
    return year + "-" + month + "-" + day; 
} 

में एक तिथि प्रक्रिया चयनित किया गया है एक बार जब यह

function dateSelected(d) { 
    // do stuff with string representation of date           
} 

यहाँ एक बेला http://jsfiddle.net/KYzaR/7/

बस सोचा था कि यह उल्लेख है कि Array.indexOf ECMA के लिए हाल ही में एक है लायक होगा -262 मानक और इसलिए आईई 7 और आईई 8 के मामले में यह समर्थित नहीं है। निम्नलिखित एमडीएन पेज कोड प्रदान करता है जो इन ब्राउज़र के लिए Array.indexOf लागू करता है https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf

+0

बहुत बहुत धन्यवाद ब्रूनो, यह वही है जो मैं ढूंढ रहा था! – Paul

+0

@ जुआन मेंडिस मुझे समझ में नहीं आता कि आपका क्या मतलब है, अगर हम indexOf का उपयोग नहीं करते हैं तो हमें कैसे करना चाहिए? – Paul

+0

@ जुआन Mendes ठीक है, धन्यवाद – Paul

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