2017-10-16 1 views
-1

Je programme un calendrier et j'ai besoin de savoir quel est le premier jour de chaque mois. Comme, Ce mois-ci, le premier jour était un dimanche. Comment ferais-je pour comprendre cela pour tous les mois de l'année? Ou n'importe quel mois d'ailleurs.JS dates, premier jour du mois

Merci d'avance!

edit: le jour peut être retourné sous la forme d'un nombre entier.

+0

Vous pouvez utiliser 'new Date ("01/10/2017"). GetDay()' pour obtenir le jour de toute date. Non? –

+0

comment puis-je transformer cela en une fonction applicable à n'importe quel mois tho?c'est mon problème – Miguel

Répondre

1

Vous pouvez créer une méthode qui retourne le nom du jour

function(year, month){ 
    var date = new Date(year, month, 1); 
    var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
    return days[date.getDay()]; 
} 
+0

cette fonction renvoie Uncaught SyntaxError: Jeton inattendu ( – Miguel

+1

wait nevermind., c'est la base 0 mais ça marche. – Miguel

0

JavaScript fournit déjà ceci hors de la boîte en utilisant getDay.

new Date().getDay() 

Cela retournera 0-6. Cela dépend de ce qu'est le jour de la semaine.

Si vous avez besoin comme une chaîne lisible que vous pouvez faire quelque chose comme ceci:

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

 
console.log(weekdays[new Date().getDay()]);

Sachant cela, vous pouvez aller Furter:

const year = new Date().getFullYear(); 
 
const weekdays = [ 
 
    'Sunday', 
 
    'Monday', 
 
    'Tuesday', 
 
    'Wednesday', 
 
    'Thursday', 
 
    'Friday', 
 
    'Saturday' 
 
]; 
 

 
[0,1,2,3,4,5,6,7,8,9,10,11].forEach(x => { 
 
    const weekday = new Date(year, x, 1).getDay(); 
 
    console.log(weekdays[weekday]); 
 
});

Voir: MDN

0

Je recommande fortement d'utiliser la bibliothèque MomentJS si vous n'êtes pas déjà l'utilisez. En utilisant moment, vous pouvez obtenir le jour du 1er de chaque mois en utilisant cette déclaration unique:

moment("2017-11-01").startOf('month').format("dddd") 

Si vous ne pouvez pas utiliser un moment pour une raison quelconque, alors vous pouvez créer une fonction qui prend en month et year et retourne le jour du 1er de ce mois. Pour cela, vous devez utiliser Date.prototype.getDay(), qui renvoie une valeur comprise entre 0 et 6, où 0 signifie dimanche.

$("#get-day").on("click", function(e){ 
 
    var year = $("#year").val(); 
 
    var month = $("#month").val(); 
 
    alert(getDay(year, month)); 
 
});//#get-day click() 
 

 

 

 
function getDay(year, month){ 
 
    var days = ["Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"]; 
 
    var dayIndex = new Date(year + "-" + month + "-01").getDay(); 
 
    return days[ dayIndex ]; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="year" value="2017" /> 
 
<input type="text" id="month" value="10" /> 
 
<button id="get-day">Get Day on 1st</button>

0

La méthode .getDay() retourne un entier, le jour de la semaine pour la date spécifiée selon l'heure locale, où dimanche = 0 et samedi = 6. Voici un exemple d'utilisation ceci:

dateFunction = function(myDate){ 
    var days = 
["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] 

    var dayInt = new Date(myDate).getDay() 
    return days[dayInt] 
} 
var FirstDayOfOctober = dateFunction("2017-10-01"); 
1

Lorsque les options pour toLocaleString sont pris en charge, vous pouvez l'utiliser pour obtenir le nom du jour dans la langue par défaut du navigateur:

function getDayName(date) { 
 
    return date.toLocaleString(undefined, {weekday:'long'}); 
 
} 
 

 
function getMonthName(date) { 
 
    return date.toLocaleString(undefined, {month:'long'}); 
 
} 
 

 
// Create a date 
 
var d = new Date(); 
 
// Set to first of month 
 
d.setDate(1); 
 
// Create string 
 
console.log(`The first of ${getMonthName(d)} was a ${getDayName(d)}.`);

Bien sûr mélange anglais avec une autre langue ne peut pas être approprié ...