2012-07-04 3 views
5

comment puis-je obtenir le mois entier dans les noms de jour du mois/année? comme:JavaScript: obtenir le tableau des noms de jour de la date donnée (mois/année)

var year = "2000"; 
var month = "7" 

... some code here that makes an array with names of days of the given month... 

et la sortie ressemble à quelque chose comme:

Array ("1. Sunday", "2. Monday", "3. Tuesday", ... "29. Thursday", "30. Friday", "31. Saturday"); 

Meilleures salutations, Chris

+0

Ce n'est pas tellement une question «JavaScript», mais plutôt une question «Quelle API de date puis-je utiliser? La partie JavaScript est facile comme une tarte une fois que vous avez trouvé une API qui déterminera quels jours de la semaine sont tombés dans un mois particulier d'une année particulière. – natlee75

+0

Quels résultats attendez-vous pour cette date? Samedi? –

+0

Scratch que ... ne devrait pas être trop dur du tout ... ne pas penser clairement en retard :-) – natlee75

Répondre

9

Ceci devrait faire ce que vous avez demandé.

function getDaysArray(year, month) { 
    var numDaysInMonth, daysInWeek, daysIndex, index, i, l, daysArray; 

    numDaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
    daysInWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
    daysIndex = { 'Sun': 0, 'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sat': 6 }; 
    index = daysIndex[(new Date(year, month - 1, 1)).toString().split(' ')[0]]; 
    daysArray = []; 

    for (i = 0, l = numDaysInMonth[month - 1]; i < l; i++) { 
     daysArray.push((i + 1) + '. ' + daysInWeek[index++]); 
     if (index == 7) index = 0; 
    } 

    return daysArray; 
} 
+0

Si vous voulez que j'ajoute des commentaires pour expliquer ce que je fais à chaque étape, faites le moi savoir et je modifierai le message. – natlee75

+0

Merci beaucoup! Ceci est exactement ce que je cherchais. Merci encore! – Chris

2

Essayez cette

<!DOCTYPE html> 
<html> 
<body> 

<p id="demo">Click the button to display todays day of the week.</p> 

<button onclick="myFunction()">Try it</button> 

<script type="text/javascript"> 
function daysInMonth(month,year) { 
    return new Date(year, month, 0).getDate(); 
} 

function myFunction() 
{var b=[],weekday = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],month=7,year=2000; 
for(var i=1,l=daysInMonth(month,year);i<l;i++){ 
var d = new Date(year,month-1,i); 
b.push(i+"."+weekday[d.getDay()]); 
} 
console.log(b);}//b is the desired array 
</script> 

</body> 
</html> 
+0

Il est à noter que dans votre 'myFunction()', 'month' est basé sur 1, pas zéro- basé; c'est la seule façon que votre implémentation de 'daysInMonth' fonctionnera correctement. Cela peut être source de confusion car l'objet 'Date' de javascript utilise une valeur de mois zéro – jackwanders

+0

Non, le mois est basé sur zéro. Voir https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/Date/ – scottheckel

+0

Aussi, en utilisant 'new Array' pour votre tableau' weekend' est inefficace, vous feriez mieux de 'jour = ['dimanche »,« Lundi »,« mardi »,« mercredi »,« jeudi »,« vendredi »,« samedi »]. De même, il n'est pas nécessaire de recréer le tableau à chaque itération de votre boucle 'for'. – jackwanders

0

Vous pouvez faire la logique vous assez facilement en utilisant l'objet standard JavaScript Date. Voici un exemple d'obtenir une date pour pousser dans votre tableau. Parcourez tout le mois en appelant la méthode. (jsFiddle)

var daysOfTheWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 

function getDisplay(month, day, year) { 
    var d = new Date(year, month-1, day); 
    return day + '. ' + daysOfTheWeek[d.getDay()]; 
} 

array_push($dates, getDisplay(7, 4, 2012)); 
+0

Je pense qu'il devrait y avoir 'month + 1' – diEcho

+0

Non, le mois est basé sur zéro. Janvier est zéro. C'est pourquoi je l'ai échangé dans cette fonction pour correspondre à ses variables. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/ – scottheckel

+0

que; s pourquoi si l'utilisateur entrée Juillet ('7') alors le script java devrait l'interpréter comme' 6' – diEcho

0

Essayez ceci et voyez le résultat dans la console.

<script> 
var weekday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 
       'Thursday', 'Friday', 'Saturday']; 
var month = '7'; 
var year = '2012'; 
realMonth = parseInt(month,10)-1; 
var monthObj = {}; 
for(var i=1;i<30;i++) 
{ 
    var d = new Date(year,realMonth,i);    
    monthObj[i] = weekday[d.getDay()]; 
} 
console.log(monthObj); 
</script> 
Questions connexes